如何使用node.js中的sequelize在创建时保存数据库中的数据

时间:2016-02-11 08:55:08

标签: mysql node.js sequelize.js

我正在尝试在创建数据库时保存批量数据。我的代码存在以下问题:

  • 如果我保留 models.sequelize.sync({force:true})。那么(function(){}); 然后它表示没有创建表。
  • 如果我保留 {force:false} ,那么在第一次部署中它会创建表,在第二次部署中,它会将数据保存在数据库中。

model / Speclization .js

module.exports = function(sequelize, DataTypes) {
    var Speclization = sequelize.define("Speclization",
        {
            speclizationname: DataTypes.STRING
        }, {
            tableName: 'speclization', // this will define the table's name
            timestamps: false           // this will deactivate the timestamp columns
        }
    );

    Speclization.bulkCreate([
        {speclizationname: 'Computer Science'}, // part of records argument
        {speclizationname: 'Information Technology'},
        {speclizationname: 'Electrical'},
        {speclizationname: 'Other'},
        {speclizationname: 'Mechninncal'},
        {speclizationname: 'Electronics'}
    ], ['speclizationname'])
    return Speclization;
};

我无法弄清楚如何在数据库中的应用程序部署中保存数据的正确方法

1 个答案:

答案 0 :(得分:0)

如何从模型定义中删除bulkCreate并将其放入sync回调中? (因为表格会在 sync之后创建,所以我认为在bulkCreate完成之前你不能sync

如下所示:

models.sequelize.sync({force: true}).then(function(){
    Speclization.bulkCreate([
        {speclizationname: 'Computer Science'}, // part of records argument
        {speclizationname: 'Information Technology'},
        {speclizationname: 'Electrical'},
        {speclizationname: 'Other'},
        {speclizationname: 'Mechninncal'},
        {speclizationname: 'Electronics'}
    ]);
});

然后得到这样的模型定义:

module.exports = function(sequelize, DataTypes) {
    var Speclization = sequelize.define("Speclization",
        {
            speclizationname: DataTypes.STRING
        }, {
            tableName: 'speclization', // this will define the table's name
            timestamps: false           // this will deactivate the timestamp columns
        }
    );
    return Speclization;
};

顺便说一句,Speclization应该用英文写成“Specialization”。 :)