2016-07-19 14 views
0

mongooseとnodeに2つのテーブルを設定しようとしていて、populateが関数ではないというエラーが表示されます。find(...)。populateはmongooseの関数ではありません

私が検索し、モデルI.ここ

と同じでないと思われるドキュメントでいる:

var mongoose = require('mongoose'); 
var dodleSchema = new mongoose.Schema({ 
    name: String, 
    productorId: {type: mongoose.Schema.ObjectId, ref: "Productor"}, 
    description: String, 
    ambassadorId: {type: mongoose.Schema.ObjectId, ref: "Ambassador"}, 
    accepted: { type: Boolean, default: false }, 
    read: { type: Boolean, default: false }, 
    deliveryAddress: { 
     lat: String, 
     lng: String 
    }, 
    createdAt: Date, 
    products: [ 
     { 
      primaryImage: String, 
      images: [], 
      name: String, 
      max: Number, 
      min: Number, 
      step: Number, 
      stock: Number, 
      normalPrice: Number, 
      doodlePrice: Number, 
      freeShipping: Boolean, 
      freeShippingFrom: Number 
     } 
    ], 
    endsAt: Date, 
    packagingType: String, 
    orders: [ 
     { 
      name: String, 
      email: String, 
      purchases: [ 
       { 
        productId: String, 
        quantity: Number 
       } 
      ] 
     } 
    ] 
}); 
module.exports = mongoose.model('Doodle', dodleSchema); 

そして、私が使用して検索:

router.route('/requests/:id') 
.get(function (req, res) { 
    doodleCollection 
     .find({ 
      ambassadorId: new mongodb.ObjectID(req.params.id), 
      read: false 
     }) 
     .populate('productorId') 
     .toArray(function (error, results) { 
      if (error) { 
       res.json({'error': "Ha habido un error en la extracción de requests"}); 
       return false; 
      } 

      var alertNew = false; 

      for (var i = 0; i < results.length; i++) { 
       if (results[i].read == false) { 
        readed = true; 
        break; 
       } 
      } 

      res.json({ 
       requests: results, 
       alertNew: alertNew 
      }); 
    }); 
}); 

これは私が得るエラーです:

Error

+1

アンバサダーIDに関する行を '{ambassadorId:mongoose.Types.ObjectId(req.params.id)}' –

+0

に変更することもできます。 'toArray'はMongooseの一部ではありません。この質問:http://stackoverflow.com/questions/20858299/model-find-toarray-claiming-to-not-have-toarray-method) 'toArray()'を削除して、それが役立つかどうか確認してください。 –

答えて

1

私は解決策を見つけて、かなり簡単でした。私は昨日本当に近いと思った。

私はコレクション内のポピュレートメソッドを実行していました。doodleCollectionと私はモデルでそれを行う必要がありました。

検索が完全に機能するオブジェクトを変更する。

doodleCollection.find(...)の代わりに、私はdoodleModel.find(...)と呼ばれ、人口は完璧です!

関連する問題