Q 是 "supporting module" of loopback .我不完全确定这意味着什么,但我假设它至少意味着可以将 Q 与环回的持久模型函数一起使用,例如 find()
或 findOne()
。我想知道如何正确设置如下内容:
app.models.Question.findOne({
where: {name: "My Question"}
}, function (err, result) {
throw err if err
}).then(function () {
console.log("success")
})
我已经使用 NPM 在我的项目目录中安装了 Q,但据我所知,app.models.Question.findOne()
仍然返回未定义的,而不是可用的 Q promise。
根据loopback docs , 使用 Q,
If a function cannot return a value or throw an exception without blocking, it can return a promise instead.
在这种情况下,我需要做什么才能让环回返回 promise ?
最佳答案
LoopBack 查询此时不返回 promise 。请在 LoopBack 存储库中发布功能请求以提醒我们(当然是在阅读 https://github.com/strongloop/loopback/wiki/Issues 之后)。但是,我确实相信 ES6 promise 在路线图上。
也就是说,您可以创建自己的 promise 并将其返回:
var deferred = Q.defer();
app.models.Question.findOne({
where: {
name: 'My Question'
}
}, function(err, result) {
if (err) return deferred.reject(err);
deferred.resolve(result);
});
return deferred.promise;
注意 我还没有对此进行测试,但它应该符合这些原则。参见 https://github.com/kriskowal/q#using-deferreds了解更多信息。
关于javascript - 使用 Strongloop 环回实现 Q,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28430480/