Javascript if语句不';t与socket.io和mongodb一起工作
我想检查我的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
这是我的代码:
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如果我不使用异步方法,它将返回一个承诺(在这里检查我的问题:)哦,谢谢,它可以工作!没问题!很乐意帮忙!