我正在使用mongoosejs运行Expressjs我在集合CustomerId之间建立了连接,如下所示:
.
.
/**
* Customer Schema
*/
var CustomerSchema = new Schema({
id : Number,
name: String,
joined: { type: Date, default: Date.now },
city: String
});
mongoose.model('Customer', CustomerSchema);
.
.
/**
* Order Schema
*/
var OrderSchema = new Schema({
id : Number,
products: [Schema.Types.Mixed],
total: Number,
comments: String,
customerId: {type: Number, ref: 'Customer'}
});
mongoose.model('Order', OrderSchema);
.
.
exports.customerOrders = function (req, res) {
return Order.find({customerId: req.params.customerId}, function (err, orders) {
Order.populate(orders, {path: 'customerId', model: 'Order'}, function (err, orders) {
if (!err) {
return res.json(orders);
} else {
return res.send(err);
}
});
});
};
上面的代码生成以下错误:
{
message: "Cast to ObjectId failed for value "1" at path "_id"",
name: "CastError",
type: "ObjectId",
value: 1,
path: "_id"
}
对象之间的关系为id
否_id
请帮我以正确的方式使用populate方法。
感谢名单,
答案 0 :(得分:1)
Mongoose的populate
功能仅支持使用_id
字段查找引用集合中的相关文档。
因此,您无法使用id
之类的其他字段,并且您需要将customerId
更改为:
customerId: {type: ObjectId, ref: 'Customer'}
在OrderSchema
中,然后使用客户的_id
值填充它。