javascript - 种子文件中的模型创建或批量创建承诺
问题描述
我有一些承诺链来添加数据。如果我在 JavaScript 文件中“正常”使用它,我从 Node.js 开始或以其他方式调用它,它可以工作(或多或少 - 不同的问题)。
但是,如果我想在带有 sequelize-cli (sequelize db:seed:all) 的 sequelize 种子文件中使用它,则这些承诺将不起作用。好的,有一个错误进入.catch
链中,但.then
不起作用......
承诺字段都是未定义的......
我知道我可以使用 bulkInsert,但是如果我“必须”使用原始 SQL,为什么我要使用 ORM,尤其是如果我在指向 uuid 的表之间有链接?
我定义了模型,有一个“正常”的迁移文件,并且想要带有种子的“开始”数据。我需要单独的东西来使用 create / bulkCreate 承诺吗?
我错过了文档中的某些内容吗?
解决方案
我自己发现了很多尝试和答案: 续集动态播种
需要在模型中固定关联:
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',
}
);
});
将字段重命名为类似于从 sequelize 生成的字段
推荐阅读
- sql - Oracle - 选择特定列中 x 最高的所有行?
- python - 我如何在 Python 中实际实现“序列协议”?
- spring - 此应用程序没有 /error 的显式映射,
- java - 在sql spring boot中自动执行查询
- reactjs - 在 React 中通过 onChange 发送照片到银行?
- python - MS Word Scraping 适用于 docx 但不适用于 doc 文件
- wordpress - 按条件更改 wordpress gutenburg 块中返回部分中的标签
- python - 如何在 Mac 上使用键盘模块
- tensorflow - ResourceApplyGradientDescent 和 ApplyGradientDescent 有什么区别?
- excel - PLSQL 包,可在内部创建带有多页表的简单 excel 文件,并作为附件直接发送到电子邮件,无需使用 UTL