Node.js Mongoose:utils.populate:路径无效。应为字符串。获得类型为';未定义';

Node.js Mongoose:utils.populate:路径无效。应为字符串。获得类型为';未定义';,node.js,mongodb,express,mongoose,promise,Node.js,Mongodb,Express,Mongoose,Promise,我不是一个全新的用户,但现在我不知道怎么了 这里我需要填充我的designerId,它是ObjectId的类型。看看我的路线 ordersAdminRouter.route('/customorder/add') .post(function(req, res){ body = req.body; console.log(body); CustomOrders.create(body, function(err, saved){

我不是一个全新的用户,但现在我不知道怎么了

这里我需要填充我的
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);
            })
        });
    });
已保存。_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
schema

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);
我必须承认,我对mongoose&express上的承诺还不熟悉,这是我第一次这么做。但是使用populate,我使用它的次数超出了我的想象。有什么建议吗

return CustomOrders.findById(saved._id).populate('designId').then(.. your code);
顺便说一句,您不必使用
.exec()
就可以执行查询,
。然后
也执行查询。您可以跳过
.exec()