gpt4 book ai didi

node.js - 如何在推送到数组之前检查子文档是否存在

转载 作者:太空宇宙 更新时间:2023-11-04 00:17:10 27 4
gpt4 key购买 nike

我尝试过搜索,但发现不符合我的查询,我有一个像这样的 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 之前,如何检查所有 contacts.contactId 是否存在于此 contactId“59c255f1f3e91433b4d4b58e”,它不断附加到数组,我需要确保只有一个带有“59c255f1f3e91433b4d4b58e”的 contactId 被推送到联系人数组,无论如何。

我不知道如何做到这一点,我已经尝试过:

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')
}
})

(我正在使用 Mongoose )我将非常感谢任何帮助:(

最佳答案

您可以使用 $addToSet 这将不允许结果数组中出现重复项欲了解更多信息结帐$addToSet

以上内容适用于 Mongoose 并回答您的问题

 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')
}
})

关于node.js - 如何在推送到数组之前检查子文档是否存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46332414/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com