这是我的用户架构
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,但它仍然是用户查询的其他部分。
答案 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
});