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()