gpt4 book ai didi

javascript - 如果字段不为空字符串如何填充如果为空则不需要填充?

转载 作者:太空宇宙 更新时间:2023-11-04 00:47:58 24 4
gpt4 key购买 nike

我有一个应用程序,之前在 mongoDB 中保存了大量数据。现在,如果 referencePeople 不是空字符串,我需要填充一些信息。在我的应用中 referencePeoplestring 类型,而不是 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之前检查是否为空吗?

最佳答案

是的,您需要使用population queryma​​tch子句

所以,你的代码应该是这样的:

exports.getOrders = function(req, res) {
Order.find({})
.populate('customer')
.populate({
'path': 'referencePeople',
'match': { 'referencePeople': {'$ne': ''} }
})
.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);
});

};

关于javascript - 如果字段不为空字符串如何填充如果为空则不需要填充?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33870204/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com