我有模特:
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 回答
解决方案是here,问题在于我不知道如何使用findOneAndUpdate函数更新模型中的数组 .