仅在尚未存在的情况下插入文档

时间:2017-02-21 09:08:30

标签: javascript node.js mongodb mongoose

我用

创建文档
Subscription.create({ email: req.body.email }, (err, subscription) => {
  //
});

我的邮件字段在我的Mongoose架构中是唯一的,因此无法使用相同的电子邮件创建多个文档。

但我不在乎某个电子邮件是否已经存在,所以我现在不想要一个重复的错误。如果电子邮件尚未存在而且如果确实存在则不创建,但如果不告诉用户,我该如何插入?

我认为最佳做法是不告诉用户数据库中是否已存在该电子邮件,因为它可用于测试电子邮件是否与该网站相关联。它似乎没有什么问题,但我仍然认为最好不要因为隐私问题而告诉它。

1 个答案:

答案 0 :(得分:0)

在猫鼬中你可以使用预功能。

var schema = new Schema(..);
schema.pre('save', function(next) {
  // Check if the mail exists. If it does, just throw an exception
  // If not, just create the thing using next.
  next();
});

在调用save函数时,应该小心捕获异常。我相信这会做的工作。