【发布时间】:2019-02-09 10:24:11
【问题描述】:
我在使用 Promise 时遇到了困难。
我想从 mongodb 中的另一个表中获取数据。
但我陷入了回调地狱,所以我试图解决这个问题,但我做不到。
我该怎么办?结果是“未定义”。
非常感谢,
let mongoose = require('mongoose');
mongoose.Promise = global.Promise;
....
exports.Recommend = (id) => {
User.find({User_id: myId})
.then((result) => {
return Promise.resolve(result[0].age)
}).then(age => {
return new Promise((resolve,rejject)=>{
resolve(User.find()
.select('User_id')
.where('age').equals(age))
})
}).then((Users_id) => {
Users_id.forEach((user, idx, arr) => {
Count.find()
.select('board_id')
.where('User_id').equals(user.User_id)
.exec((err, items) => {
return new Promise((resolve,reject)=>{
resolve(
items.forEach((post, idx, arr) => {
posts.push(post.board_id)
}))
})
})
})
}).then(()=>{
console.log("posts:"+posts);
})
}
【问题讨论】:
-
不要在
then中创建新的承诺!猫鼬会回报承诺!就做return User.find()…! -
喜欢这个? " 返回结果[0].age "
-
是的。
Promise.resolve创建一个立即解决的承诺...
标签: javascript node.js mongodb mongoose promise