Mongo Find无效

时间:2017-07-10 09:37:28

标签: node.js mongoose

这是我的用户架构

 var UserSchema = new Schema({
        Pcard: [{ type: Schema.Types.ObjectId, ref: 'Pcard'  }]
})

这些id保存在用户Pcard数组

  "user": { // id 59560bc83e1fdc2cb8e73236
     "Pcard": [
                "595b43d16e4b7305e5b40845",
                "595b459a6e4b7305e5b40848",
                "595f48f58117c85e041f1e1c",
            ],
}

这是我的Pcard Scema

var PcardSchema = new Schema({
    Time : {
        type : Date,
        default: Date.now
    },

})

我想找到具有Id的用户,并且还包含Pcard数组中的一些id

User.find({  _id: req.user._id,
                       Pcard:{$in : [req.params.PcardId] }
                    }, function (err, Userpresent) {
                         if (err) {
                                res.json(code.Parked);
                           }
                          if (Userpresent === null || Userpresent === undefined) {

                     res.json(code.notAllowed);
                         }else{

This else is execting everytime.



}                        
    }
                    });

当我查询Pcard阵列中没有Pcardid的用户时,它仍处于其他状态! 例如。我正在查询这个id 59560bc83e1fdc2cb8e73236,这在Pcard阵列中不包含5957bd177e996b56d08b991a,但它仍然是用户查询的其他部分。

1 个答案:

答案 0 :(得分:0)

如果您只希望有一位用户,请使用findOne

return early而言,你可能更有用/更清洁,而不是拥有一堆if-else。

User.findOne({  
    _id: req.user._id,
    Pcard: { $in : [req.params.PcardId] }
}, function (err, user) {
    if (err) {
        return res.json(code.Parked);
    }
    // simplified: undefined and null are both falseys
    if (!user) {
        return res.json(code.notAllowed);
    }

    // user should be found at this point

});

好读:All falsey values in JavaScript