Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript if语句不';t与socket.io和mongodb一起工作_Javascript_Mongodb_If Statement_Socket.io - Fatal编程技术网

Javascript if语句不';t与socket.io和mongodb一起工作

Javascript if语句不';t与socket.io和mongodb一起工作,javascript,mongodb,if-statement,socket.io,Javascript,Mongodb,If Statement,Socket.io,我想检查我的mongodb数据库中是否存在某些值,但如果不存在,请给我一个错误,而不是一个事件。 这是我的代码: socket.on("bot_req_id", async function(data) { let db = mongoose.db("wumpusCave") let bots = db.collection("bots") let find = bots.find({da

我想检查我的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”返回预期值,那么问题就出在这里

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)
            })

因为所有这些方法都是错误的async@underscore但是我需要findOne()的异步方法function@underscore如果我不使用异步方法,它将返回一个承诺(在这里检查我的问题:)哦,谢谢,它可以工作!没问题!很乐意帮忙!