Nodejs Mongoose - проверьте, существует ли значение объекта массива или нет, добавьте новый объект в массив, если он не существует

Я очень новичок в nodejs. Я хочу проверить в mongodb, существует ли значение или нет, если существует, обновить ссылку, если не существует, я хочу поместить объект в массив. Может ли кто-нибудь помочь мне, как написать заявление, чтобы проверить, существует ли значение или нет в БД? Пожалуйста помоги

Итак, это схема 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")
}

person husna yaman    schedule 14.02.2021    source источник


Ответы (1)


В вашем третьем фрагменте кода вы выполняете операцию поиска, которая вернет пустой массив [], который будет считаться истинным, поэтому это причина, по которой элемент управления не входит в условие else. Используйте findOne вместо find (если storeId уникален), иначе просто проверьте длину ответа на запрос, если она больше или равна 0.

person Roshan Raj    schedule 14.02.2021