我试过搜索但发现非符合我的查询, 我有这样的JSON输出,存在于数据库
中{ _id: 59c255f1f3e91433b4d4b58e,
name: 'example name';,
__v: 52,
contacts:
[ { contactId: '59c255f1f3e91433b4d4b58e', //duplicated
_id: 59c2a9f0471ffb202c3771d2,
added: 2017-09-20T17:48:32.328Z },
{ contactId: '59c255f1f3e91433b4d4b58e', //duplicated
_id: 59c2ac524fc91235a0d89195,
added: 2017-09-20T17:58:42.956Z }
{ contactId: '59c255f1f3e91433b4234eff',
_id: 59c2ac524fc91235a0d89195,
added: 2017-09-20T17:58:42.956Z }
],
}
如何通过此contactId" 59c255f1f3e91433b4d4b58e"检查所有contacts.contactId
是否存在?在尝试推送另一个contactId之前,
它不断附加到数组,我需要确保只有一个contactId与" 59c255f1f3e91433b4d4b58e"无论怎样,都会被推到联系人阵列。
我不知道如何做到这一点,我试过了:
User.findOne({_id: req.user.id}, function(err, newadd) {
if(!newadd === req.req.params.to){ // also tried "indexOf" ^^ "lastIndexOf"
newadd.contacts.push({
contactId:req.params.to
})
newadd.save()
}else{
res.end('already exist try again')
}
})
(我正在使用猫鼬) 我真的很感激任何帮助:(
答案 0 :(得分:1)
您可以使用$ addToSet,这将不允许在结果数组中重复 了解更多信息$addtoset
上面是mongoose并回答你的approch
User.findOne({_id: req.user.id}, function(err, newadd) {
if(!newadd._id === req.params.to){
newadd.contacts.push({
contactId:req.params.to
})
newadd.save()
}else{
res.end('already exist try again')
}
})
答案 1 :(得分:0)
嗯,mybe就像这样
User.findOne({_id: req.user.id}, function(err, newadd) {
var test = newadd.contacts.filter(function(result){
if ((result.contactId === req. !.....) === true){
console.log()
}else{
console.log()
}
})