猫鼬发现只有一个文档在一个集合上运行了两次

时间:2019-06-01 02:25:44

标签: node.js mongoose

我在猫鼬中使用find()来定位文档。猫鼬在回调上循环两次(首先带null,然后带所需的文档)。

我的猫鼬里只有一个文档。

这是我的代码

model.find({c_id:req.params.c_id},{'_id': 0,'__v':0}).then(function(contract){
            console.log(typeof contract); //1, 5
            console.log(typeof contract[0]); //2, 6
            if(req.session.email == contract[0]['_doc'].initiator){ //throws error because contract is undefined the first time
                console.log("Initiator");
                res.end();
            }
            else{
                console.log("Access Denied"); //7
                res.end();
            }
        }).catch(function(err){
            console.log("No contract found with this id"); //3
            console.log(err); //4
        });

输出为:

//I have numbered the output lines with their respective code lines
1. object
2. undefined
3. No contract found with this id
4. Cannot read property _doc of undefined 
5. object
6. object
7.Access Denied

我知道我可以将其包装在if语句中,仅在contract不是undefined时才运行代码。

我想知道为什么会这样?这是我在做什么吗?还是猫鼬find()应该会这样?

注意:之所以使用[0]['_doc']是因为find()返回了一个游标,我很肯定它们不会在这里引起任何问题。

那是什么导致find()运行两次?

编辑:我多次运行该代码,并且只随文档一起运行了一次或两次(没有未定义的数据)。相同的代码,有时带来未定义的数据,有时没有。

0 个答案:

没有答案