if 语句不适用于 socket.io 和 mongodb

if statement doesn't works with socket.io and mongodb

我想检查我的 mongodb 数据库中的一些值是否存在,但如果不存在,给我一个错误,而不是一个事件。
这是我的代码:

   socket.on("bot_req_id", async function(data) {
       let db = mongoose.db("wumpusCave")
       let bots = db.collection("bots")
       let find = bots.find({data})
       if(find) {
           console.log(data)
           let bot = await bots.findOne({"id":data})
           console.log(bot)
           socket.emit('bot_res_id', {"name": bot.name, "description": bot.description, "avatar": bot.avatar, "id": bot.id, "invite": bot.invite})
       } else {
           socket.emit('notfound', "bot non trovato")
       }
   })

错误:

           socket.emit('bot_res_id', {"name": bot.name, "description": bot.description, "avatar": bot.avatar, "id": bot.id, "invite": bot.invite})
                                                  ^

TypeError: Cannot read property 'name' of null

我用node.js
我该如何解决?
感谢您的建议,抱歉英语不好!

您必须等待此完成

let find = bots.find({data})

在使用结果之前。如果变量“find”确实 return 预期值那么问题就出在这里

let bot = await bots.findOne({"id":data})

但我相当确定这是第一件事。许下诺言,就这样等待

return new Promise(resolve => {
            mongo.connect(url, { useUnifiedTopology: true }, async function(err, db) {
                let dbo = db.db("yourdbhere")
                // Do stuff here
                // Make sure to close the db connection after you're done!!
                resolve(true)
            })