我有一个获得结果所需的功能。
当我将1作为_id过滤器时,一切正常。
collectionPersonnel
.find({ '_id' : 1 })
.toArray(function (err, personnel) {
console.log(personnel);
});
如果我以另一种方式给过滤器,例如用户[0] [' personnel_id'] - 那就是商店1-那么我只得到[]结果;
collectionPersonnel
.find({ '_id' : user[0]['personnel_id'] })
.toArray(function (err, personnel) {
console.log(personnel);
});
然后我尝试了另一种方式。但它不起作用,因为我使用了一个字符串(用户[0] [' personnel_id'])而不是ObjectID。
var ObjectID = require('mongodb').ObjectID;
var personnelPK_Hex = (user[0]['personnel_id']).toHexString();
var personnelPK = ObjectID.createFromHexString(personnelPK_Hex);
我该怎么办?
我的所有代码都在下面;
module.exports = {
show: function(req, res) {
User.native(function(err, collectionUser) {
if(err) {
console.log("There is no exist a User by current_id");
};
collectionUser
.find({'_id' : req.param('id')})
.toArray(function (err, user) {
Personnel.native(function(err, collectionPersonnel) {
if(err) {
// handle error getting mongo collection
console.log("There is no exist a Personel by current _id");
};
if(!collectionPersonnel) {
console.log("There is no exist a Personel by current _id");
};
// var ObjectID = require('mongodb').ObjectID;
// var personnelPK_Hex = (user[0]['personnel_id']).toHexString();
// var personnelPK = ObjectID.createFromHexString(personnelPK_Hex);
collectionPersonnel
.find({ '_id' : user[0].personnel_id })
.toArray(function (err, personnel) {
console.log(personnel);
});
});
});
});
}
};
控制台的输出是; []
就像apsillers的说法一样。我错误地给了收集数字_id。 我修复了_id值,一切正常。
谢谢大家...
答案 0 :(得分:0)
尝试使用用户[0] .personal_id 代替用户[0] [' personnel_id'] 请提供您的架构设计最好弄明白你究竟缺少什么。
我试过这个
collectionPersonnel
.find({ '_id' : user[0].personnel_id })
.toArray(function (err, personnel) {
console.log(personnel);
});
答案 1 :(得分:0)
user[0]['personnel_id']
可能是一个字符串。对于Mongo,"1"
与1
不同,这就是您的文字编号1
有效的原因,但您的变量(包含字符串)却没有。
相反,请尝试使用一元加号将字符串转换为数字:+user[0]['personnel_id']
。