在findOneAndUpdate中检查数组中存在参数的项
On findOneAndUpdate check that item with parameter existing in array
我有模型:
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,我不能添加新的。
我怎样才能做我想做的?
解决方案在这里,问题是,我不知道如何通过使用findOneAndUpdate函数来更新模型中的数组。
相关文章:
- 测试mongo脚本中是否存在参数
- 如何添加函数中存在的所有参数
- 无法在“RTCPeerConnection”上执行“createOffer”:需要 2 个参数,但只有 0 个参数存在
- 存在其他参数时访问Javascript事件
- 是否存在用于解析 URL 路径段(矩阵)参数的 JavaScript 库
- jQuery脚本,它搜索现有的查询参数并且不添加“"如果存在
- 未捕获的类型错误:无法在“CSSStyleSheet”上执行“插入规则”:需要 2 个参数,但仅存在 1 个参数
- 将函数作为 Javascript 中可能尚不存在的参数传递
- 有没有办法确定角度.js是否存在 url 查询参数
- 如何在 JavaScript 中传递参数,确保它的引用存在
- Rails 输入表单填充了 jQuery .val(),但参数中不存在数据
- 名称参数在 JQUERY 方法的当前上下文中不存在
- JavaScript 参数在当前上下文中不存在
- JavaScript 中是否存在没有足够的参数这样的事情?为什么
- 检查函数参数是否存在,并在JavaScript中键入
- 将会话ID/密钥作为请求参数传递时存在安全风险
- 简单`replace()`的第二个参数存在问题
- Hapijs和Joi:验证存在的查询参数:'禁止'
- 以优雅的方式检查多个参数的存在
- 仅当URL参数存在时显示HTML内容