为啥 MongoDB 允许创建相同的用户? [复制]

Posted

技术标签:

【中文标题】为啥 MongoDB 允许创建相同的用户? [复制]【英文标题】:Why does MongoDB allow creating identical users? [duplicate]为什么 MongoDB 允许创建相同的用户? [复制] 【发布时间】:2016-11-16 05:15:22 【问题描述】:

我正在尝试通过 Angular 应用程序注册一个新用户,但是当我使用相同的用户名注册一个用户时,Mongo 允许我这样做,所以它不会再次出现错误,之后我可以看到两个用户数据库中的相同名称。但我确实将名称字段标记为唯一。

部分api:

apiRoutes.post('/signup', function(req, res) 
    if (!req.body.userId || !req.body.password) 
        res.json(success: false, msg: 'Please pass name and password.');
     else 
        var newUser = new User(
            name: req.body.name,
            password: req.body.password,
            wallet: req.body.wallet,
            userPic: req.body.userPic
        );
        // save the user
        newUser.save(function(err) 
            if (err) 
                return res.json(success: false, msg: 'Username already exists.');
            
            res.json(success: true, msg: 'Successful created new user.');
        );
    
);

型号代码:

// set up a mongoose model
var UserSchema = new Schema(
    name: 
        type: String,
        unique: true,
        required: true
    ,
    password: 
        type: String,
        required: true
    ,

    wallet: 
        type: Number,
        required: true
    ,

    userPic: 
        type: String,
        required: true,
        unique: true
    

    );

和POST请求代码(登录名和密码取自外部):

 let newUser = 
      password: password,
      wallet: 0,
      userPic: md5(login),
      name: login
    ;   
    this.$http.post('http://127.0.0.1:8080/api' + '/signup', newUser);

【问题讨论】:

这个帮助了我。谢谢Answer 【参考方案1】:

试试你的模型:

name: 
        type: String,
        index:unique: true,
        required: true
    

【讨论】:

and : type : String , unique : true, required : true, dropDups: true 还是同样的问题。出于某种原因,我在此集合的 Indexes 文件夹中只有 _id 索引

以上是关于为啥 MongoDB 允许创建相同的用户? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

为啥 Oracle 不允许您使用相同的列同时创建主键和唯一约束?

传递常量引用与创建临时常量副本相同,那么为啥要传递常量引用呢? [复制]

mongodb单机升级为副本集

为啥 MySQL 不允许这个外键? [复制]

为啥我们在 MongoDB 复制中需要一个“仲裁者”?

mongodb用户管理