gpt4 book ai didi

node.js - 在 sequelize seeds 中查找记录

转载 作者:搜寻专家 更新时间:2023-10-31 22:38:20 25 4
gpt4 key购买 nike

我一直在尝试为我的项目编写一些种子,但遇到了一些障碍。

我的usersroles 表之间存在多对多 关系。因此,当我为数据库播种时,我需要将具有正确 ID 的记录添加到我的连接表中。为此,我需要通过 email 查找用户,通过 name 查找角色并获取 ids,这就是问题所在。我在 sequelize site 上找不到任何好的文档.我正在使用 sequelize-cli用于播种和迁移的东西。我得到一个 queryInterface 作为参数,但我找不到任何示例或提及这个东西实际上可以做什么。只是一些简单的示例让我(以某种方式)完成了迁移以及我能够在 google 上找到的内容。

我已经通过使用我会说的“肮脏的技巧”解决了这个问题......

// 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 查询数据库。我想知道你们中是否有人遇到过这个问题并解决了它,如果是的话,请分享。

最佳答案

是的,您可以使用查询接口(interface)查询数据库。

  async up(queryInterface, Sequelize) {
const user = await queryInterface.rawSelect('User', {
where: {
name: 'John doe',
},
}, ['id']);

if(!user) {
// do bulkInsert stuff.
}
},

关于node.js - 在 sequelize seeds 中查找记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37761986/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com