【发布时间】:2021-06-28 17:23:45
【问题描述】:
我一直在尝试为我的项目编写一些种子,但遇到了一些障碍。
我的users 和roles 表有many-to-many 关系。因此,当我为数据库播种时,我需要在我的联接表中添加一条具有正确 ID 的记录。为此,我需要通过email 找到用户并通过name 找到角色并获得ids,这就是问题所在。我在sequelize site 上找不到任何好的文档。我正在使用sequelize-cli 进行播种和迁移。我将queryInterface 作为参数,但我找不到任何示例或提及这件事实际上可以做什么。只是一些简单的例子让我完成了迁移(不知何故)以及我在谷歌上能找到的东西。
我已经通过使用我会说的“肮脏技巧”解决了这个问题......
// user_seeds.js
up: function (queryInterface, Sequelize) {
return queryInterface.bulkInsert(table, [{
id: 1,
name: 'John doe',
email: 'john@doe.com',
created_at,
updated_at
}], {});
// roles_seeds.js
up: function (queryInterface, Sequelize) {
return queryInterface.bulkInsert(table, [{
id: 1,
name: 'admin',
created_at,
updated_at
}, {
id: 2,
name: 'user',
created_at,
updated_at
}]);
//user_roles_seeds.js
up: function (queryInterface, Sequelize) {
return queryInterface.bulkInsert(table, [{
employee_id: 1,
role_id: 1
}]);
},
不喜欢这个解决方案,因为如果我想再次运行种子并忘记它是如何工作的,将来可能会很麻烦。我应该有一种方法可以使用这个queryInterface 查询数据库。我想知道你们中是否有人遇到过这个问题并解决了,如果有,请分享。
【问题讨论】:
-
你解决了吗??
-
以我的方式。
-
基本上没有办法做非原始查询顺便说一句:github.com/sequelize/cli/issues/862
标签: node.js sequelize.js sequelize-cli