Meteor – collection.find()总是返回所有的字段

进入这个(稍微恼人的问题)我试图查找集合中的所有logging,而不是显示(或显示)特定的字段(分数)。 这只是一个例子,并不反映我的实际代码,但问题总是可重现的。 我排除的字段非常大,我只是试图生成可用logging的菜单。

类似的命令

players.find({},{score:1}) players.find({},{score:0}) 

总是返回每个字段,而不是在mongodb中触发exclude / include。 我是否担心什么,因为模板可能可以控制什么数据呈现为HTML? 不pipe怎样,仍感觉数据传输到客户端; 并在控制台中显示。

你的语法是一点点,它应该是

 CollectionName.find({}, {fields: {'onlyThisField':1}}); 

要么

 CollectionName.find({}, {fields: {'everythingButThisField':0}}); 

你的模板确实能够控制显示的数据,但是仍然有很多情况下字段限制是有意义的 – 数据隐私或效率(所有logging的一些字段,“当前”logging的所有字段)是两个常见的

你没有提到它,但这通常是在发布function – 请参阅http://docs.meteor.com/#meteor_publish- fields修饰符也可在客户端,但它不限制数据发送到客户端,只是对模板 – 服务器端的字段缩减/select有不同的好处

仔细检查你是否已经删除了autopublish软件包,但是如果你有这个活动的话,你应该看到一个警告,并且编写你自己的发布函数,这是你最常用的fields

首先,如果你想在Collection.find()控制一些字段,你可以尝试这样做:

 CollectionName.find({}, {fields: {field:1}}); 

但它只在服务器上工作。

或者试试这个:

在服务器上:

 Meteor.publish("myCollection", function () { return SvseTree.find({},{fields: {field:1}}); }); 

在客户端:

 Meteor.subscribe("myCollection"); 

然后运行meteor remove autopublish

其次,如果你想获得Collection.find()的数组,试着去做:Collection.find()。fetch();