我正在尝试使用NodeJS和Mongoose开发一些东西。我有一个“口袋妖怪”对象的集合,对于其中一些我有一个DBRef来自同一集合中的另一个“口袋妖怪”对象。
const Schema = mongoose.Schema;
const PokemonSchema = new Schema({
id: {type: Number, min: 1, index: {unique: true}},
name: {type: String, index: {unique: true}},
local_name: {type: String, index: {unique: true}},
_evolution_candy: {type: Schema.ObjectId, ref: "Pokemon" }
});
然而,当我试图获取我的DBRef中包含的信息时,我不断得到“未定义”。然而,当我创建父对象的控制台日志时,我看到了引用:
Pokemon
.findOne({
$or: [
{"name": alias},
{"local_name": alias},
{"id": parseInt(alias) || 0}
]
})
.populate("_evolution_candy")
.exec(function(err, pokemon) {
if (err) return console.error(err);
if (null === pokemon) return message.channel.send(
"Il n'y a aucune entrée dans le Pokédex pour le nom ou l'identifiant `" + alias + "`."
);
console.log(pokemon);
console.log(pokemon._evolution_candy);
})
;
这里输出:
{ _id: 59f8f6b1142e4035a08666e9,
id: 64,
name: 'kadabra',
local_name: 'kadabra',
evolution_candy:
DBRef {
_bsontype: 'DBRef',
namespace: 'pokemons',
oid: 59cfbe4afa002f766c679138,
db: 'pr_willow' } }
undefined
我指定DBRef是好的,直接使用Mongo客户端创建。 我在哪里犯了错误?