有没有一种方法可以在ORM类型中自动创建数据库?

时间:2019-11-29 15:17:35

标签: node.js nestjs typeorm

我正在从sequelizeORM迁移到typeORM。在sequelize-cli中,有一些不错的命令可以删除数据库并创建一个新命令,例如:

node_modules/.bin/sequelize db:drop
node_modules/.bin/sequelize db:create
node_modules/.bin/sequelize db:migrate

好吧,对于typeORM,我知道如何运行迁移,但是在任何地方都找不到如何自动创建或删除数据库的方法。提前Tnx。

3 个答案:

答案 0 :(得分:3)

您可以使用CLI工具typeorm schema:drop,或者如果要在每次启动时删除并重新创建数据库,则可以使用

{
...
  dropSchema: true,
...  
  "migrations": [
    "dist/migrations/**/*.js"
  ]
}

在其中设置连接选项并设置迁移路径等。

答案 1 :(得分:0)

是的,typeORM具有迁移功能,您可以轻松地使用它们。

如果您遵循本文档https://github.com/typeorm/typeorm/blob/master/docs/migrations.md

typeorm migration:run将成为您的朋友。

答案 2 :(得分:0)

你也可以使用typeorm-extension包,来createdrop为连接指定的数据库,适用于几乎所有的数据库驱动。 包还解析了额外参数(ENV:TYPEORM_DRIVER_EXTRA)的额外参数charsetcharacterSet

import {createDatabase} from "typeorm-extension";

(async () => {
    await createDatabase({ifNotExist: true});
   
    await dropDatabase({ifExist: true});

    process.exit(0);
})();

您还可以提供 charsetcharacterSet 作为 createDatabase() 函数第一个参数的属性。 F.e

  • postgres
createDatabase({ifNotExist: true, characterSet: "UTF8"});
  • mysql
createDatabase({ifNotExist: true, charset: "utf8mb4_general_ci", characterSet: "utf8mb4"});

如果您有任何问题或疑虑,请随时与我联系或为 Github

上的代码库做出贡献