想象一下,你有一个类似于以下的集合......
Tests = [
{
name: 'Some Test',
questions: [
{ question: 'Answer to life, the universe, and everything?', answer: '42' },
{ question: 'What is your favorite color?', answer: 'Blue' },
{ question: 'Airspeed velocity of unladen European Swallow?', answer: '24 mph' }
]
}
];
如何发布除answer属性之外的整个集合?
据我所知,您可以执行以下操作以省略发布...
中的属性Meteor.publish('tests', function() {
return Tests.find({}, {fields: {name:0}});
});
但我不确定如何从数组属性中省略属性。
谢谢!
答案 0 :(得分:0)
它无法以您想要的方式完成。 Meteor仅支持1级深度的字段说明符。有时您可以使用子字段说明符,但它不可靠。
您可以使用testId字段将您的问题放入他们自己的集合中,该字段将它们链接回测试关系样式。每个文档一个问题,然后您就可以指定只发布问题字段。
Meteor.publish ('questions', function(testId) {
return Questions.find({testId: testId}, {fields: {question: 1}})
});
与尝试找到允许您的问题存在于测试文档中的解决方法相比,它并不理想,但相当轻松。
可能有一种方法可以通过更复杂的发布手动执行此操作。有similar question here的答案可以进入。