使用猫鼬在nodejs中找到非空嵌套数组?

时间:2020-11-07 20:57:58

标签: node.js arrays mongoose is-empty

这是mongoDB的架构代码:

{
    "_id" : ObjectId("5fa2ae1085e87b2770398837"),
    "ClientId" : "5fa2ae0985e87b2770398836",
    "AddtasksMain" : [     
           
        {
            "AddtasksId" : "ji36staqpody$s",
            "_id" : ObjectId("5fa2b5e1f2cf6602104c5b8f"),
            "comments" : []
        }, 
        {
            "AddtasksId" : "z3u84xsh5ujy$s",
            "_id" : ObjectId("5fa2b6f88ac746155883cc80"),
            "comments" : []
        }
       
    ],
    "__v" : 0
}

以下是我尝试评估以查找空数组的路由代码:

Comments.findOne({"AddtasksMain.AddtasksId":req.query.Id4AddtasksBigpaths},function (error, data) {
            if (error) {
              console.log("error");
            }  else{
               data.AddtasksMain.forEach(element => {
                 if(element.AddtasksId == req.query.Id4AddtasksBigpaths)
                 {
                   arrComm = element.comments;
                   console.log("arrComm = "+ element.comments);
                     Comments.findOne({'arrComm.0': {$exists: true}},
                     function (error, success) {
                           if (error) {
                             console.log("Comment is empty");
                             return res.end('{"warning" : "Add Comment first", "status" : 400}');
                           }
                           else {
                             console.log("status for rejection set");
}
})
}
})
}
})

因此,当执行此代码时,console.log("arrComm = "+ element.comments); 正在打印一个空数组。但是它仍然处于else状态。我希望它进入错误“如果”条件并执行该代码。但是,即使数组为空还是非空,它也会进入else条件。我犯了什么错误?

我也尝试过这种方式:

if(!arrComm) {
//statement
}
else {
}

但是这样也可以进入其他条件。 :(

0 个答案:

没有答案