我有以下代码;
if (checkUserExists(serverID, userID) === null) {
console.log("was null");
addNewUserToDB(serverID, userID, username);
}
如果mongoDB找不到服务器和UID的匹配项,我希望它执行。因此,我有这个;
function checkUserExists(serverID, userID) {
mongoose.connect('mongodb://localhost:27017/test', {useNewUrlParser: true, useUnifiedTopology: true});
playerModel.findOne({"serverID": serverID, "userID": userID }, (err, player) => {
if (err) {
console.log(err);
} else {
console.log(player);
return player;
}
});
}
如果找到了用户,它将返回用户对象。如果没有,它将返回该对象,该对象将为null。但是,if语句永远不会触发。
答案 0 :(得分:0)
您的代码在checkUserExists方法内部异步执行,这就是为什么checkUserExists不返回任何内容的原因。 使用async / await等待finOne的响应,然后返回响应。
示例
async function checkUserExists(serverID, userID) {
mongoose.connect('mongodb://localhost:27017/test', { useNewUrlParser: true, useUnifiedTopology: true });
var response;
try {
response = await playerModel.findOne({"serverID": serverID, "userID": userID});
return response;
} catch (e) {
// Error handling
response = { "title": "error in retrieving players", "desc": ""};
return response;
}
}