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)
})
我想检查我的 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)
})