我对Promise功能有疑问。我使用 NodeJS + sequelizeJS
我有一个Child Promise函数来获取表User Data
中的auth_user
:
function sequelize_user (id_in) {
var promises = []
var querydb = `SELECT * FROM auth_user WHERE id IN (${id_in})`;
promises.push(
db.sequelize.query(querydb, { type: db.sequelize.QueryTypes.SELECT})
.then(res => {
return res
})
)
return Promise.all(promises);
}
我有一个家长承诺功能来进行对话,该对话有参与者作为用户。
function sequelize_conversation (conversation_id, req) {
var promises = [];
for (let id of conversation_id) {
promises.push(
db.ConversationPerson.findAll({ where: {'conversation_id': id, 'user_id': { [Op.ne]: req.user.user_id }} })
.then(participants => {
if (cvs_person.length) {
return {
'conversation_id': id,
'with_user': (function() {
sequelize_user(cvs_person.user_id)
.then(user => {
console.log(user) // -> { id: 1, username: 'feedgit' }
return user // -> {} ?????????
})
})()
}
} else {
return { 'conversation_id': id }
}
})
);
}
return Promise.all(promises);
}
在此代码中:
'with_user': (function() { sequelize_user([participants[0].user_id]) .then(user => { console.log(user); return user }) })()
我想使用子项Promise函数User
来获得sequelize_user
,但是它返回{}
。这不是真的。
我的代码有什么问题?我认为是因为错误的Promise函数调用。
答案 0 :(得分:1)
您似乎正在寻找
db.ConversationPerson.findAll({
where: {'conversation_id': id, 'user_id': { [Op.ne]: req.user.user_id }}
}).then(participants => {
if (cvs_person.length) {
return sequelize_user(cvs_person.user_id).then(user => {
// ^^^^^^ ^^^^^
console.log(user) // -> { id: 1, username: 'feedgit' }
return {
// ^^^^^^^^
conversation_id: id,
with_user: user,
// ^^^^
};
});
} else {
return { 'conversation_id': id }
}
})