我在用户控制器中有一个索引操作,我想执行两个任务,并且不希望执行所需的 res.json() 方法,直到它们都有机会完成。
我有一个友谊加入模型,它连接了用户。一个列是frienderId,另一个列是friendedId。在下面的索引函数中,期望的结果是我最终将得到一个单一的用户对象,即一个朋友。下面有两个 promise 的原因是因为该用户既可以在frienderId列中,也可以在friendedId列中,因此我必须解析 req.user 的朋友可能出现两种情况。
问题是最终返回的事物,即 res.json(result),始终返回正确的朋友,但总是返回一个空数组[],要么在所需对象之前,要么在其后。我知道这个空数组来自其中一个两个 promise 场景,在这些场景中没有找到任何结果。是否有某种方法代替 resolve,比如说拒绝? 如果被调用,整个 promise 将不会被推到 promise 数组中吗? 然后我就可以测试 if (!friended) {reject} 或者 if (!friender) {reject}
我知道 .each 正在枚举每个 promise 并给出每个 promise 的结果。然而,我不想要每个 promise 的结果,我只想访问每个 promise 运行的副作用。
谢谢!
我有一个友谊加入模型,它连接了用户。一个列是frienderId,另一个列是friendedId。在下面的索引函数中,期望的结果是我最终将得到一个单一的用户对象,即一个朋友。下面有两个 promise 的原因是因为该用户既可以在frienderId列中,也可以在friendedId列中,因此我必须解析 req.user 的朋友可能出现两种情况。
问题是最终返回的事物,即 res.json(result),始终返回正确的朋友,但总是返回一个空数组[],要么在所需对象之前,要么在其后。我知道这个空数组来自其中一个两个 promise 场景,在这些场景中没有找到任何结果。是否有某种方法代替 resolve,比如说拒绝? 如果被调用,整个 promise 将不会被推到 promise 数组中吗? 然后我就可以测试 if (!friended) {reject} 或者 if (!friender) {reject}
我知道 .each 正在枚举每个 promise 并给出每个 promise 的结果。然而,我不想要每个 promise 的结果,我只想访问每个 promise 运行的副作用。
谢谢!
index: function(req, res) {
var promiseArray = [];
promiseArray.push(new Promise(function(resolve) {
user.findById(req.user.id).then(function(user) {
user.getFrienders({
where: {
username: req.body.username
}
}).then(function(friender) {
resolve(friender[0])
})
})
}));
promiseArray.push(new Promise(function(resolve) {
user.findById(req.user.id).then(function(user) {
user.getFriendeds({
where: {
username: req.body.username
}
}).then(function(friended) {
resolve(friended[0])
})
})
}));
Sequelize.Promise.map(promiseArray, function(result) {
res.json(result);
});
}