我无法弄清楚为什么我在执行这段代码时会遇到这种行为:
var mongoose = require('mongoose');
var Countries = require(./countries.js),
Countries = mongoose.model('Countries');
Countries.find({name: 'Germany'}, function(err, obj){
console.log(obj._id);
console.log(mongoose.Types.ObjectId(obj._id));
console.log(obj);
});
结果如下:
undefined
539c96e09d494a0000aff5cb
{ _id: 539c65a6d8d18d0000f5cf64,
name: 'Germany',
__v: 0 }
只有使用整个对象打印的id才是正确的(使用Robomongo直接查看数据库进行验证)。
由于我需要将该ID保存为另一个集合的引用,您是否有任何建议和/或为何会出现此类行为?
答案 0 :(得分:1)
obj是一个集合,所以你的结果可能不是你所期望的。
Countries.find({name: 'Germany'}, function(err, countries){
countries.forEach(function(obj) {
console.log(obj._id);
console.log(mongoose.Types.ObjectId(obj._id));
console.log(obj);
});
});