如果语句未执行。 (MongoDB / JS)

时间:2019-11-30 09:49:54

标签: javascript mongodb

我有以下代码;

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语句永远不会触发。

1 个答案:

答案 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;
  }
}