Mongoose模式:SubDocument字段仅对每个文档唯一

时间:2016-06-15 05:55:21

标签: javascript node.js mongodb mongoose subdocument

我有一个小问题。我有一个用户架构,其中包含一个重定向到表架构的表字段。 Table元素可以包含一个名称,我希望这个名称对于每个用户是唯一的,而不是在User之间。

实施例: 用户1 - > Table1.name:" foo" User2 - > Table1.name:" foo"

但是这个User1 - > Table2.name:" foo"不可能。

这是用户架构:

var UserSchema = new mongoose.Schema({
    username: {  type: String, required: true, index: {  
    unique: true } },
    email: {  type: String, required: true, index: {unique: true } },
    password: {  type: String, required: true },
    tables: [{ type: Schema.Types.ObjectId, ref: 'Table' }],
    resetPasswordToken: String,
    resetPasswordExpires: Date,
    uuid: String,                
});

这是表架构:

var TableSchema = Schema({
    name: { type: String, required: true, index: { unique: true }},
    logos: [{ type: Schema.Types.ObjectId, ref: 'Logo'}],
});

这就是我查询的地方:

app.post('/newTab', function(req, res){

    var use = req.user.username;
    var newTab = new Table({
        name: req.body.name,
    });

    newTab.save(function(err, docs){
        if (err) 
        {
            console.error(err);
            res.writeHead(500);
            res.end();
        }
        else
        {
            User.findOne({username: req.user.username}, function(err,  docs) {
                if(err)  {throw (err);}
                else
                {
                    docs.tables.push(newTab);
                    docs.save(function(err, docs){
                        if (err) return console.error(err);
                        res.writeHead(200);
                        res.end(userId);
                    });
                }
            }); 
        }
    });

目前,我无法为两个不同的用户添加相同的表名。 我也尝试过稀疏索引的东西,但不知道它是如何工作的

0 个答案:

没有答案