首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >插入项目原子性

插入项目原子性
EN

Stack Overflow用户
提问于 2016-11-04 23:27:04
回答 1查看 51关注 0票数 3

我试图创建一个新的帐户与独特的电子邮件。其中一个选项是检查是否存在相同电子邮件的帐户。如果没有,创建新帐户。

代码语言:javascript
复制
Account
    .find({email: req.body.email})
    .exec((err, accounts) => {
        //Try to find an account that have the same email
        if (!accounts.length) {
          //If none is found create a new account with this email
          var account = new Account({email: req.body.email});
          account.save();
        }
    });

这种方法的问题是,我不清楚这在原子上是否安全。如果多个用户试图在同一时间用同一封电子邮件创建一个新帐户,该怎么办?这会破坏我数据库的一致性吗?

我听说过在SchemaType中的唯一选择。

我应该选择这个选项吗?

使用猫鼬内置验证是必须的吗?其他选择?

上述代码是否被认为是错误的做法?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-04 23:33:05

这在MongoDB中是不安全的。不过,您可以在“电子邮件”字段上使用唯一的索引。这将导致插入失败,如果它已经使用,或者如果有人刚刚插入它并发。

如果计划使用切分,这可能会成为一个问题,因为只有碎片键才支持唯一的索引。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40433092

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档