【发布时间】:2016-10-25 02:07:52
【问题描述】:
我正在向 Meteor blaze 模板发布一些数据,我想返回特定字段,但它是一个带有嵌套数组/对象的复杂对象,所以我不知道该怎么做
这是我要发布的对象的示例
{
"_id": "q9i6qAZmKcf6MCPE2",
"name": "Exam Name",
"questions": [
{
"number": 1,
"question": "Question 1",
"multipleTrue": false,
"answers": [
{
"letter": "a",
"answer": "Blah Blah",
"correct": false <--------------
},
{
"letter": "b",
"answer": "Blah Blah",
"correct": true <--------------
}
]
},
{
"number": 2,
"question": "Question 2",
"multipleTrue": false,
"answers": [
{
"letter": "a",
"answer": "Blah Blah",
"correct": true <--------------
},
{
"letter": "b",
"answer": "Blah Blah",
"correct": true <--------------
}
]
}
]
}
我将使用以下代码发布此内容:
return Assessments.find( {"name": "Exam Name"}, {fields: {name: 1, questions: 1}});
如何修改该出版物以排除我用箭头突出显示的“正确”键?
问题数组>问题对象>答案数组>答案对象>正确键
【问题讨论】:
-
我会将答案与问题分开,以保持您的数据干净。您还可以对答案集合实施安全性,但不能对问题集合中的字段实施安全
-
当涉及到数组时,mongodb
$projection运算符有其局限性。参考。 docs.mongodb.com/v3.2/reference/operator/projection/positional/…,我建议重新设计您的数据模型,如果无法重新设计,您可以在发布前删除correct属性。即questions.forEach(function(q){ q.answers.forEach(function(a){delete a. correct}) }),但它会性价比。 -
感谢大家的回复,我决定接受我接受的答案,因为它非常有效。
标签: arrays mongodb meteor meteor-publications