在种子文件中模型创建或批量创建承诺



我有一些承诺链来添加数据。如果我在 JavaScript 文件中"正常"使用它,我会从 Node 开始.js或者以其他方式调用它,它可以工作(或多或少 - 不同的问题(。

但是,如果我想在带有续集 cli(续集 db:seed:all(的续集种子文件中使用它,则承诺将不起作用。好的,.catch链中有一个错误,但.then不起作用......

承诺字段都是未定义的...

我知道我可以使用bulkInsert,但是如果我"必须"使用原始SQL,特别是如果我在指向uuid的表之间有链接,为什么还要使用ORM?

我定义了模型,有一个"正常"的迁移文件,并希望使用种子获得"开始"数据。我是否需要单独的东西来使用创建/批量创建承诺?

我是否遗漏了文档中的某些内容?

我自己通过多次尝试找到了它,答案如下: 续集动态种子设定

需要在模型上修复关联:

User.associate = function(models) {
User.belongsToMany(
models.Role, {
through: 'user_role',
}
);
};

Role.associate = function(models) {
Role.belongsToMany(
models.User, {
through: 'user_role',
}
);
};

m:n 表需要这个:

....
.then(() => {
queryInterface.createTable('user_role', {
userUuid: {
type: Sequelize.UUIDV4,
references: {
model: 'User',
key: 'uuid',
},
allowNull: false,
},
roleUuid: {
type: Sequelize.UUIDV4,
references: {
model: 'Role',
key: 'uuid',
},
allowNull: false,
},
createdAt: { allowNull: false, type: Sequelize.DATE },
updatedAt: { allowNull: false, type: Sequelize.DATE },
});
}).then(() => {
return queryInterface.addConstraint(
'user_role',
['userUuid', 'roleUuid'], {
unique: true,
type: 'primary key',
name: 'userrole_pkey',
}
);
});

将字段重命名为与续集生成的字段相似

最新更新