猫鼬 findOne :异步和同步之间的不同

Posted

技术标签:

【中文标题】猫鼬 findOne :异步和同步之间的不同【英文标题】:mongoose findOne : different between async & sync 【发布时间】:2021-12-04 06:18:19 【问题描述】:

我对知道两者之间有什么不同感到困惑:

var users = Users.findOne(key)

var users = await Users.findOne(key)

【问题讨论】:

【参考方案1】:
var users = Users.findOne(key)

Users.findOne() 方法返回一个可以解决或拒绝的承诺。见promises

所以在上述情况下,users 变量实际上包含一个 promise 对象,如果您想获取解析的数据,您必须执行类似的操作

users.then(data=>
// your db query data
).catch(err=>
// error if something goes wrong
)



    

以下带有 await 的语法实际上为您提供了 promise 的解析数据,请参阅 await

 var users = await Users.findOne(key)

因此,您的 mongodb 的 [key:value] 这样的数据将存储在 users 变量中。

另外await 仅在异步函数中有效,因此您需要将其包装在异步函数中

async function foo()
    var users = await Users.findOne(key)


【讨论】:

以上是关于猫鼬 findOne :异步和同步之间的不同的主要内容,如果未能解决你的问题,请参考以下文章