gpt4 book ai didi

javascript - 如何在 Node.js 中添加 promise.all Sequelize findOrCreate 循环?

转载 作者:搜寻专家 更新时间:2023-11-01 00:29:55 24 4
gpt4 key购买 nike

我在 sequelize 中创建了两个模型。我得到了结果数组“Users”,然后循环获取或创建基于 User.id 的新“Room”。我想在完成所有房间后打印所有房间。我在控制台中得到了空数组,因为它是异步的。创建所有 Room 后如何调用 console.log?

var Users = sequelize.import(__dirname + "/../models/own/user");
var Rooms = sequelize.import(__dirname + "/../models/own/room");
var _this = this;

this.users = [];
this.rooms = [];

Users.findAll().then(function(users) {
_this.users = users;

users.forEach(function(user){

Rooms.findOrCreate({where: {user_id: user.get('id')}})
.spread(function(room, created) {
_this.rooms.push(
room.get({
plain: true
})
);

});

});

console.log(_this.rooms)

});

最佳答案

你可以通过 Promise.all 执行一系列的 promise :

var promises = users.map(function(user){
return Rooms.findOrCreate({where: {user_id: user.get('id')}});
});
Promise.all(promises).then(function(dbRooms){
for(var key in dbRooms){
_this.rooms.push(dbRooms[key][0].get({plain: true}));
}
console.log(_this.rooms);
});

关于javascript - 如何在 Node.js 中添加 promise.all Sequelize findOrCreate 循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40398376/

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