【发布时间】:2016-02-25 12:14:08
【问题描述】:
我有一个应用程序,该应用程序具有以前保存在 mongoDB 中的大量数据。现在,如果 referencePeople 不是空字符串,我需要填充一些信息。在我的应用中 referencePeople 是 string 类型而不是 mongoose ObjectId 类型。
我不想更改我的架构。有没有办法在填充之前检查 referencePeople 是否为空。或者如果为空,请避免填充。
架构:
var OrderSchema = new mongoose.Schema({
customer: {type: mongoose.Schema.Types.ObjectId,ref: 'Customer'},
referencePeople: String, // can be "" or "customer id"
......
});
尝试了下面的代码,但出现异常在路径“_id”处为值“”转换为 ObjectId 失败
exports.getOrders = function(req, res) {
Order.find({})
.populate('customer')
.populate({path: 'referencePeople', model: 'customer'})
.exec(function(error, orders) {
if(error) {
return res.status(400).send({msg: 'Error occurred while getting orders.', error: error});
}
return res.status(200).send(orders);
});
};
现在我想填充 referencePeople 如果它不是空字符串。 我可以在填充 referencePeople 之前检查是否为空吗?
【问题讨论】:
-
更新了我的问题。我知道尝试将空字符串转换为对象时出现转换错误。但我的问题是如果它是空字符串,我该如何处理。可能不是重复的问题。谢谢
标签: javascript angularjs node.js mongodb