我有模特:
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的用户,我就无法添加新的。
我怎样才能做我想做的事?