在询问一个属性

时间:2017-10-31 23:20:22

标签: node.js mongodb mongoose mongoose-schema mongoose-populate

我正在尝试使用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客户端创建。 我在哪里犯了错误?

0 个答案:

没有答案