gpt4 book ai didi

sequelize.js - 使用异步模型查询对数据库播种进行 Sequelize

转载 作者:行者123 更新时间:2023-12-03 22:22:15 24 4
gpt4 key购买 nike

我有 2 个相关的表,我想在这些表上播种。用户播种机工作正常,并且
在我的第二个种子文件中,我查询所有用户,然后将每个用户附加到 users_information 表上。这是我的代码。

var chance = require('chance').Chance();
const User = require('../models/User');

module.exports = {
up: function (queryInterface, Sequelize) {
User.findAll()
.then(users => {
var usersInfo = [];
for(let user of users) {
var userInfo = {
user_id: user.id,
first_name: user.username,
middle_name: chance.last(),
last_name: chance.last(),
address: chance.address()
};
usersInfo.push(userInfo);
}

return queryInterface.bulkInsert('users_information', usersInfo);
})
.catch(error => console.error(error));
},

down: function (queryInterface, Sequelize) {
return queryInterface.bulkDelete('users_information', null, {});
}
};

当我运行 db:seed:all 命令时,它运行没有错误,并且 users_information 表上的数据为空。

播种机在没有模型查询的情况下工作。只是为了测试我的播种机文件是否有效。
up: function (queryInterface, Sequelize) {
var usersInfo = [];

for(var i = 1; i <= 10; i++) {
var userInfo = {
user_id: i,
first_name: chance.first(),
middle_name: chance.last(),
last_name: chance.last(),
address: chance.address()
};
usersInfo.push(userInfo);
}
return queryInterface.bulkInsert('users_information', usersInfo);
},

这是我的 table

用户表
- id (PK)
- username
- user_type
- is_active

users_information 表
- id (PK)
- user_id (FK)
- first_name
- last_name
- address

有什么建议或想法吗?谢谢!

最佳答案

我遇到了类似的问题。通过返回 promise 解决了我的问题。我认为 sequelize 期望得到返回。它将等到 promise 被解决或拒绝。如果 promise 没有返回,我认为它假设一切都“完成”和“好”。您的第一个示例没有返回 promise 。它只是“运行”并存在,而无需等待所有异步代码完成(又名 User.findAll())。

解决方案:
我认为如果你在你的 up 方法中返回一个 promise 并在你“完成”时解决它,我认为这会起作用。例子:

  up: function (queryInterface, Sequelize) {
// return a new promise that sequelize will wait for...
return new Promise((resolve, reject)=>{
User.findAll()
.then(users => {
var usersInfo = [];
for(let user of users) {
var userInfo = {
user_id: user.id,
first_name: user.username,
middle_name: chance.last(),
last_name: chance.last(),
address: chance.address()
};
usersInfo.push(userInfo);
}
// Notice we are not returning this.
queryInterface.bulkInsert('users_information', usersInfo);
resolve('Done');
})
.catch((error) => {
console.error(error);
reject(error)
});
}
},

关于sequelize.js - 使用异步模型查询对数据库播种进行 Sequelize ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45633130/

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