首页 > 解决方案 > 我如何使用 var out of model.find(), Mongoose

问题描述

我想使用 varbot_man如何传递到函数外。

var bot_man = ''
  Post.find({ title: 'bot_status' }, function (err, author) {
    if (err) throw err
    bot_man = author[0].body
    console.log(author[0].body) //output => 'on'
  })
  console.log(`result = ${bot_man}`) // result = 

结果是'' result =

标签: javascriptnode.jsmongodbmongoose

解决方案


Post.find是一个异步函数。当您使用回调调用它时,它会延迟回调的执行,直到结果准备好(将来的某个地方)并立即进入下一行。因此bot_man在 中评估时仍然是一个空字符串console.log('result = ${bot_man}')

要获得结果,您最好制作函数async并将其重写为:

let author = await Post.find({ title: 'bot_status' }).exec()
let bot_man = author[0].body

console.log(`result = ${bot_man}`)

尽管对于生产代码,它仍然缺乏一些健全性检查。是否author不为空或为空以及错误处理。我没有将它们包含在代码段中,以免使代码复杂化。


推荐阅读