javascript - 使用 Mongoose 验证电子邮件唯一性的正确方法是什么?

标签 javascript node.js mongodb mongoose

我找不到合适的方法来验证 mongoose 中的电子邮件唯一性。我发现没有任何实际效果。我正在考虑使用 Schema.pre,但如果是这样,我将如何编写代码呢? Mongoose 文档非常糟糕,没有描述 pre 是如何或做什么的。

如果有人能告诉我这通常是如何完成的或指出正确的方向,我将不胜感激。我不明白为什么这么简单的东西在 mongoose 中没有简单的解决方案...

最佳答案

我更喜欢在注册路径中检查电子邮件的唯一性。

这样我们就可以完全控制应该向客户端发送哪些状态代码或错误消息。

router.post("/register", async (req, res) => {
  try {
    const { email, password } = req.body;

    let user = await User.findOne({ email });
    if (user) return res.status(400).send("User already registered.");

    user = new User({ email, password });
    user.password = await bcrypt.hash(user.password, 10);
    await user.save();

    res.send("registered");
  } catch (err) {
    console.log(err);
    res.status(500).send("Something went wrong");
  }
});

关于javascript - 使用 Mongoose 验证电子邮件唯一性的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59212143/

相关文章:

javascript - 使用 jquery-validation 验证焦点上的日期字段

javascript - 需要解决 IE10 中的 selectSingleNode

javascript - ExpressJS 中最好的 session 存储 - NodeJS

javascript - 当您尝试引用架构时如何保存数据

javascript - JavaScript 中下拉菜单的默认值

javascript - 哪些字符与 Array.from 分组?

node.js - 如何容器化 Vue.js 应用程序?

node.js - Node : why should one close down the process when an error occurs?

node.js - 如何在 mongooseJS 中相互连接模式?

angularjs - mongoose/mongodb 不会使用 PUT 进行更新