问题描述
我对 nodejs 很陌生。我想检查 mongodb 值是否存在,如果存在,更新链接视图,如果不存在,我想将一个对象推送到数组中。任何人都可以帮助我如何编写语句来检查 db 中的值是否存在?请帮忙
所以这是 Admin
架构
{
"_id": "67324b2cc6817758118e9557d8","name": "James","__v": 0,"affiliatelink": [
{
"storeId": 60014d6e7286763490c3543,"storeName": white choc,"linkview": 1
}
]
}`
这是我当前的代码。
Admin.findById(adminId).then(admin =>{
if(admin){
//if affiliatelink.storeId = storeId(exist)
Admin.update({ _id: adminId,"affiliatelink.storeId": storeId},{$inc: {"affiliatelink.$.linkview": 1}},(err,result) => {
if (err) {
console.log("error "+err)
}
else {
//push an object into array
}
});
我尝试这样做只是为了检查 if else 语句是否有效。但它不起作用。
const res = await Admin.find({"affiliatelink.storeId":storeId; //use async in function deFinition
console.log(res);
if (check in res) {
console.log("item is existed")}
else {
console.log("item is not existed")
}
解决方法
在您的第三个代码片段中,您正在执行一个查找操作,它将返回一个 []
的空数组,该数组将被视为 true,因此这就是控件不进入 else 条件的原因。
使用 findOne
而不是 find
(如果 storeId 是唯一的),否则只需检查查询响应的长度是否大于或等于 0。