首页 文章

在findOneAndUpdate上检查该参数是否存在于数组中

提问于
浏览
0

我有模特:

var UserSchema  = new Schema({
    name : {type: String, required: true},
    devices : [
        { uuid : {type: String, required: true},
        token : {type: String, required: true}
    ]
})

当用户从另一个(新)设备连接时,我想将新设备推送到设备阵列,否则,当用户更新令牌时,我需要更新现有的数组项 .

那么,我在做什么:

User.findOneAndUpdate({name: 'John'}, { 
        $push: {devices : { uuid : '12345', token : 'TEST_TOKEN'}}
        }, {safe: true, new : true}, function(err, user) {
            console.log(err);
            console.log(user);          
    });

我认为我需要以某种方式检查设备UUID在数组中是否存在,如果存在更新令牌,否则创建新设备项并推送到阵列

我已经尝试使用unique:true创建uuid索引

{ uuid : {type: String, required: true, index : {unique: true}}

但是这个索引设置为所有集合 . 如果我有另一个具有相同UUID的用户,我无法添加新的 .

我怎么能做我想做的事?

1 回答

  • 0

    解决方案是here,问题在于我不知道如何使用findOneAndUpdate函数更新模型中的数组 .

相关问题