From 101f6fc8f8ac5613555caa6a9d2343bf4a8e4ec1 Mon Sep 17 00:00:00 2001 From: slTrust Date: Mon, 15 Feb 2021 13:37:23 +0800 Subject: [PATCH] =?UTF-8?q?seed=20=E5=A1=AB=E5=85=85=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dist/entity/Post.js | 33 ++++++++++++++++++- dist/{index.js => seed.js} | 29 ++++++++++++++-- ...53\345\205\205\346\225\260\346\215\256.md" | 28 ++++++++++++++++ src/entity/Post.ts | 31 +++++++++++++++++ src/index.ts | 7 ---- src/seed.ts | 15 +++++++++ 6 files changed, 133 insertions(+), 10 deletions(-) rename dist/{index.js => seed.js} (57%) create mode 100644 "scripts/03seed\345\241\253\345\205\205\346\225\260\346\215\256.md" delete mode 100644 src/index.ts create mode 100644 src/seed.ts diff --git a/dist/entity/Post.js b/dist/entity/Post.js index 9ddc611..6eab7b7 100644 --- a/dist/entity/Post.js +++ b/dist/entity/Post.js @@ -21,7 +21,8 @@ var _typeorm = require("typeorm"); var _dec, _dec2, _dec3, _dec4, _class, _class2, _descriptor, _descriptor2, _descriptor3, _temp; -var Post = (_dec = (0, _typeorm.Entity)('posts'), _dec2 = (0, _typeorm.PrimaryGeneratedColumn)('increment'), _dec3 = (0, _typeorm.Column)('varchar'), _dec4 = (0, _typeorm.Column)('text'), _dec(_class = (_class2 = (_temp = function Post(attributes) { +var Post = (_dec = (0, _typeorm.Entity)('posts'), _dec2 = (0, _typeorm.PrimaryGeneratedColumn)('increment'), _dec3 = (0, _typeorm.Column)('varchar'), _dec4 = (0, _typeorm.Column)('text'), _dec(_class = (_class2 = (_temp = // Partial 代表不用把Post的所有属性传进来 +function Post(attributes) { (0, _classCallCheck2["default"])(this, Post); (0, _initializerDefineProperty2["default"])(this, "id", _descriptor, this); (0, _initializerDefineProperty2["default"])(this, "title", _descriptor2, this); @@ -43,4 +44,34 @@ var Post = (_dec = (0, _typeorm.Entity)('posts'), _dec2 = (0, _typeorm.PrimaryGe writable: true, initializer: null })), _class2)) || _class); +/* +@Entity('posts') +export class Post { + @PrimaryGeneratedColumn('increment') + id: number; + @Column('varchar') + title: string; + @Column('text') + content: string; + // 啰嗦的方式 + constructor(title:string,content:string) { + this.title = title; + this.content = content; + } +} + +// 另一种方式:这个会有问题 +@Entity('posts') +export class Post { + @PrimaryGeneratedColumn('increment') + id: number; + + constructor( + @Column('varchar') public title:string, + @Column('text') public content:string + ) { + } +} +*/ + exports.Post = Post; \ No newline at end of file diff --git a/dist/index.js b/dist/seed.js similarity index 57% rename from dist/index.js rename to dist/seed.js index dd138d1..6546d56 100644 --- a/dist/index.js +++ b/dist/seed.js @@ -10,16 +10,41 @@ require("reflect-metadata"); var _typeorm = require("typeorm"); +var _Post = require("./entity/Post"); + (0, _typeorm.createConnection)().then( /*#__PURE__*/function () { var _ref = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(connection) { + var posts; return _regenerator["default"].wrap(function _callee$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: - console.log(connection); - connection.close(); + _context.next = 2; + return connection.manager.find(_Post.Post); case 2: + posts = _context.sent; + + if (!(posts.length === 0)) { + _context.next = 7; + break; + } + + _context.next = 6; + return connection.manager.save([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11].map(function (n) { + return new _Post.Post({ + title: "Post ".concat(n), + content: "\u8FD9\u662F\u6211\u7684\u7B2C".concat(n, "\u7BC7\u6587\u7AE0") + }); + })); + + case 6: + console.log('posts 数据填充了'); + + case 7: + connection.close(); + + case 8: case "end": return _context.stop(); } diff --git "a/scripts/03seed\345\241\253\345\205\205\346\225\260\346\215\256.md" "b/scripts/03seed\345\241\253\345\205\205\346\225\260\346\215\256.md" new file mode 100644 index 0000000..f2269ae --- /dev/null +++ "b/scripts/03seed\345\241\253\345\205\205\346\225\260\346\215\256.md" @@ -0,0 +1,28 @@ +### seed 填充数据 + +- 前置操作 参考 01docker.md 内容,新建好容器,配置好数据库连接 + +- 开第一个终端 `yarn dev` + - 可以编译我们的 typeorm代码 + +- 开第二个终端执行数据库迁移 + +```$xslt +# 创建数据库表 +yarn migration:run +# revert操作 +yarn migration:revert +``` + +- 填充数据 + +``` +# 项目根目录 +node dist/seed.js +``` + +- 进入docker容器内部查询 + +``` +select * from posts; +``` \ No newline at end of file diff --git a/src/entity/Post.ts b/src/entity/Post.ts index 3f645c2..9619012 100644 --- a/src/entity/Post.ts +++ b/src/entity/Post.ts @@ -9,7 +9,38 @@ export class Post { @Column('text') content: string; + // Partial 代表不用把Post的所有属性传进来 constructor(attributes: Partial) { Object.assign(this, attributes); } } + +/* +@Entity('posts') +export class Post { + @PrimaryGeneratedColumn('increment') + id: number; + @Column('varchar') + title: string; + @Column('text') + content: string; + // 啰嗦的方式 + constructor(title:string,content:string) { + this.title = title; + this.content = content; + } +} + +// 另一种方式:这个会有问题 +@Entity('posts') +export class Post { + @PrimaryGeneratedColumn('increment') + id: number; + + constructor( + @Column('varchar') public title:string, + @Column('text') public content:string + ) { + } +} +*/ diff --git a/src/index.ts b/src/index.ts deleted file mode 100644 index 38c8332..0000000 --- a/src/index.ts +++ /dev/null @@ -1,7 +0,0 @@ -import "reflect-metadata"; -import {createConnection} from "typeorm"; - -createConnection().then(async connection => { - console.log(connection); - connection.close() -}).catch(error => console.log(error)); diff --git a/src/seed.ts b/src/seed.ts new file mode 100644 index 0000000..9c7e04f --- /dev/null +++ b/src/seed.ts @@ -0,0 +1,15 @@ +import "reflect-metadata"; +import {createConnection} from "typeorm"; +import {Post} from "./entity/Post"; + +createConnection().then(async connection => { + const posts = await connection.manager.find(Post); + + if (posts.length === 0) { + await connection.manager.save([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11].map(n => { + return new Post({title: `Post ${n}`, content: `这是我的第${n}篇文章`}); + })); + console.log('posts 数据填充了'); + } + connection.close(); +}).catch(error => console.log(error));