2017-02-18 13 views
0

Я не совсем новый пользователь, но теперь я не знаю, что случилось.Mongoose: utils.populate: неверный путь. Ожидаемая строка. Got typeof 'undefined'

Здесь мне нужно заполнить мой designerId, который является типом ObjectId. Взгляните на мой маршрут.

ordersAdminRouter.route('/customorder/add') 
    .post(function(req, res){ 
     body = req.body; 
     console.log(body); 
     CustomOrders.create(body, function(err, saved){ 
      if (err) throw err; 
      Designs.findByIdAndUpdate(saved.designId, {$set: {status: 'Order Sent'}}, {new: true}).exec() 
       .then(function(updated){ 
        return CustomOrders.findById(saved._id).populate(saved.designId).exec(); 
      }) 
      .then(function(orders){ 
       res.json(orders); 
      }) 
      .then(undefined, function(err){ 
       console.log(err); 
      }) 
     }); 
    }); 

saved._id работает, потому что когда я удалить Заполнить, он возвращает документ, который мне нужно без заполненного документа конечно.

Посмотрите на мою схему

var mongoose = require('mongoose'); 
var Schema = mongoose.Schema; 

var customOrderSchema = new Schema({ 
    designId: { type: Schema.Types.ObjectId, ref: 'customDesigns' }, 
    size: { type: String }, 
    quantity: { type: Number }, 
    totalPrice: { type: Number }, 
    paymentMode: { type: String }, 
    rcpt_img: { type: String }, 
    refNumber: { type: String } 
}); 

module.exports = mongoose.model('customOrders', customOrderSchema); 

Вот моя customDesigns схема.

var mongoose = require('mongoose'); 
var Schema = mongoose.Schema; 

var customDesignSchema = new Schema({ 
    item_name: { type: String }, 
    price: { type: Number, default: 0 }, 
    img_url_front: { type: String }, 
    img_url_back: { type: String }, 
    designer: { type: Schema.Types.ObjectId, ref: 'users' }, 
    color: { type: String }, 
    designDate: { type: Date, default: Date.now() }, 
    status: { type: String, default: 'For Qoutation' } 
}); 

module.exports = mongoose.model('customDesigns', customDesignSchema); 

мне нужно признать, что я новичок в обещания на мангусте & выразить, и это мой первый раз делаю это. Но используя populate, я использую его больше, чем я могу думать. Какие-либо предложения?

ответ