我有一个带有类似于以下子模式的模式:
const mealSchema = new Schema({
entree: String,
dessert: String,
confirmed: Boolean
})
const eventSchema = new Schema({
date: Date,
entertainment: String,
meal: {
type: mealSchema,
get: meal => meal && meal.confirmed ? meal: "TBA";
}
})
假设我希望用户能够搜索事件并获取有关给定事件的娱乐和用餐的信息。但是,除非得到确认,否则我不想在活动中用餐。
我也不希望向用户显示confirmed
,因此在我的Express API中,我使用类似这样的内容:
router.get('/events', async (req, res) => {
const events = await Event.find(req.query, '-meal.confirmed');
res.send(events);
})
在上面的示例中,-meal.confirmed
从confirmed
中删除了meal
属性,但是,它也使吸气剂失去作用。在调用getter时,confirmed
已被删除,因此返回的逻辑不适用。
我可以从查询中删除选择器,并使用像这样的黑手解决方案:
get: meal => {
if (meal && meal.confirmed) {
return {
entree: meal.entree,
dessert: meal.dessert
}
}
但是我更喜欢通过猫鼬本机解决。
有什么想法吗?