Meteor - 如何排除子集合中的属性?

时间:2015-03-17 18:18:22

标签: meteor publish

想象一下,你有一个类似于以下的集合......

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}});
});

但我不确定如何从数组属性中省略属性。

谢谢!

1 个答案:

答案 0 :(得分:0)

它无法以您想要的方式完成。 Meteor仅支持1级深度的字段说明符。有时您可以使用子字段说明符,但它不可靠。

您可以使用testId字段将您的问题放入他们自己的集合中,该字段将它们链接回测试关系样式。每个文档一个问题,然后您就可以指定只发布问题字段。

Meteor.publish ('questions', function(testId) {
    return Questions.find({testId: testId}, {fields: {question: 1}})
});

与尝试找到允许您的问题存在于测试文档中的解决方法相比,它并不理想,但相当轻松。

可能有一种方法可以通过更复杂的发布手动执行此操作。有similar question here的答案可以进入。