gpt4 book ai didi

node.js - 如何将以下代码替换为 Bluebird Promise 样式?

转载 作者:搜寻专家 更新时间:2023-10-31 23:32:59 26 4
gpt4 key购买 nike

我几乎是 bluebird/promiseA+ 的新手,我想知道如何将下面的 mongoose 代码转换为 bluebird 风格?

UserUnit.find({ user_id: req.user._id }).populate('unit_id').exec(function (err, units) {
if (err) {
res.send(err)
} else {
a = a + b;
res.json(units)
}
})

这是我尝试过的:

var Promise = require('bluebird')

Promise.promisifyAll(UserUnit)
Promise.promisifyAll(UserUnit.prototype)

var Promise = require('bluebird')

Promise.promisifyAll(UserUnit)
Promise.promisifyAll(UserUnit.prototype)

UserUnit.findAsync({ user_id : req.user._id })
.spread(function (rs) {
return Promise.try(function() {
return rs.populate('unit_id')
})
}).then(function (units) {
res.json(units)
}).catch(function (err) {
if (err) res.send(err)
})

最佳答案

UserUnit.find 不是回调方法,甚至不是异步方法,因此 UserUnit.findAsync 没有意义。你不应该需要 promise 你自己的类(class),你应该让你的类(class)开始返回 promise 。

如果你在某处 promise 了 mongoose:

Promise.promisifyAll(require("mongoose"));

你可以做到

UserUnit.find({ user_id: req.user._id })
.populate("unit_id")
.execAsync()
.then(function(units) {
res.json(units);
})
.catch(function(err) {
res.send(err);
});

关于node.js - 如何将以下代码替换为 Bluebird Promise 样式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28043701/

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