2016-07-19 75 views
0

我想填充两个表在猫鼬和节点,我收到错误,填充不是一个函数。find(...)。填充不是函数在猫鼬

我有搜索和文档中看来,它同样为一

这里的模型:

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(...)和填充工作完美!