Dob*_*nov 1 javascript node.js sequelize.js
我是 NodeJS 和 Sequelize 的新手,我正在尝试在项目启动时执行续集播种器。
这是我的种子函数之一的示例。
filePath: src/database/seeders/20220402125658-default-filters.js
'use strict';
module.exports = {
async up(queryInterface, Sequelize) {
await queryInterface.bulkInsert('Filters', [
{
id: 'b16c15ce-9841-4ea5-95fb-0d21f8cd85f0', // TODO: use uuid4()
name: 'Amount Filter',
maxAmount: 200.0,
minAmount: 0.2,
createdAt: new Date(),
updatedAt: new Date(),
},
]);
},
async down(queryInterface, Sequelize) {
await queryInterface.bulkDelete('Filters', null, bulkDeleteOptions);
},
};
Run Code Online (Sandbox Code Playgroud)
在我的index.js 文件中,我正在执行sequelize.sync() 来同步我的数据库模型。这工作得很好,但我还想在同步完成时执行上面的种子代码。
filePath: src/database/index.js
db.sequelize.sync().then(() => {
// execute seeders here ...
});
Run Code Online (Sandbox Code Playgroud)
你知道我该怎么做吗?当我通过 npx 命令使用它时,播种工作正常npx sequelize-cli db:seed:all,但我想在项目启动时自动执行此操作。
小智 6
一种简单的方法可能是编写一个通过 Sequelize CLI 运行迁移/种子的脚本,并在您的脚本中添加调用它的脚本,例如package.json(或者可能只是)。然后只需运行即可启动应用程序。start./run-migrations.sh && node .sequelize-cli db:migrate && sequelize-cli db:seed:all && node .npm run start
除此之外,从表面上看,Sequelize 具有用于以编程方式应用迁移/种子的umzug库。请参阅本期中的评论,了解如何执行此操作。
我将在此处复制代码以防丢失:
Run Code Online (Sandbox Code Playgroud)/* <PROJECT_ROOT>/migrations.js */ var Umzug = require("umzug"); var models = require("./models"); var migrationsConfig = { storage: "sequelize", storageOptions: { sequelize: models.sequelize // modelName: 'SequelizeMeta' // No need to specify, because this is default behaviour }, migrations: { params: [ models.sequelize.getQueryInterface(), models.sequelize.constructor ], path: "./migrations", // path to folder containing migrations pattern: /\.js$/ } }; var seedsConfig = { storage: "sequelize", storageOptions: { sequelize: models.sequelize, modelName: 'SequelizeData' // Or whatever you want to name the seeder storage table }, migrations: { params: [ models.sequelize.getQueryInterface(), models.sequelize.constructor ], path: "./seeds", // path to folder containing seeds pattern: /\.js$/ } }; var migrator = new Umzug(migrationsConfig); var seeder = new Umzug(seedsConfig); module.exports = () => migrator.up().then(() => seeder.up()); /* <PROJECT_ROOT>/index.js */ var migrations = require("./migrations"); // Run migrations & seeds migrations().then(function() { console.log("Migrations completed"); });
| 归档时间: |
|
| 查看次数: |
5434 次 |
| 最近记录: |