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