猫鼬:使用promise作为其他功能的参数

mtths

我试图很好地了解如何使用Promise,主要是因为我想查询数据,然后使用该数据查询其他数据

我有这个架构:

var serviceSchema = new Schema({
name: String,
});

并在此方法:

serviceSchema.statics.getIdByName = function getIdByName (serviceName) {

this.findOne({name :serviceName }).exec(function(err, service){
    if(err) console.log(err)

    return service._id

})
}

在我的代码中,我想做类似的事情:

var service_id = Service.getIdByName("facebook")
otherSchema.findOne({service : service_id}).exec(...)

但是service_id是一个承诺,因此查询不正确,我不想进入回调地狱并在回调内部调用模型等,我已经尝试使用类似

async.series([getVariables], function(err, results){
otherSchema.findOne({service : service_id}).exec(...)})

其中getVariables是:

function getVariables(callback1) {
if(service_id!=undefined) {
    callback1(serviceID)
}}

非常欢迎您提供任何有关实现此目标的帮助!非常感谢

mtths

答案实际上是使用async / await并执行var x = await Model.findOne()。exec()

或任何返回诺言的函数,那么您可以在代码中的任何位置使用x

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章