通过异步检查Mongo Atlas DB中是否已经存在电子邮件并等待

时间:2019-04-14 05:55:08

标签: node.js

试图检查用户在注册步骤中提供的电子邮件是否已经存在于我的Mongo Atlas数据库中。这是我的代码。我收到所有电子邮件的response.status(409),无论数据库中是否存在电子邮件。谢谢,感谢您的投入。

  const userExists = await checkIfUserExists(email);
  if (userExists) return res.status(409).json(message.fail('User with this email already exists.'));

async function checkIfUserExists(email) {
  return User.findOne({ email: email })
      .then( () => true)
      .catch(() => false);
}

2 个答案:

答案 0 :(得分:0)

尝试一下:

async function checkIfUserExists(email) {
  return User.findOne({ email: email })
      .then(user => user ? true : false)
      .catch(() => false);
}

我不认为猫鼬在找不到用户时会抛出错误。它将仅在您的回调中返回null或未定义。

答案 1 :(得分:0)

即使没有找到用户,您也将返回true

const userExists = await checkIfUserExists(email);
if (userExists) return res.status(409).json(message.fail('User with this email already exists.'));

async function checkIfUserExists(email) {
  const user = await User.findOne({ email });
  return !!user;
}