- (void)application:(UIApplication * nonnull)application didRegisterUserNotificationSettings:(UIUserNotificationSettings * nonnull)notificationSettings
运行时间测试后,看起来这个查询需要的时间比SomeCollection.find({}, { fields: { exerciseId: 1} })
更长,没有任何参数。限制该领域有什么好处吗?我想,它会使用更少的本地内存,但什么时候值得呢?
答案 0 :(得分:1)
根据我的经验,在客户端上使用fields
的好处是有限的。但是,在服务器上定义出版物时,绝对应该使用它,原因有两个:
答案 1 :(得分:0)
好处是它变得不那么活跃,您可以在Tracker.autorun
以及使用observe
或observeChanges
时受益。
修改强>
我不是100%肯定Tracker.autorun
。
答案 2 :(得分:0)
明确指定确实在节省内存,通过线路发送更少的数据,可能会给您带来很小的性能提升。它的另一个重要用途是作为安全措施。想象一下,您希望客户端订阅Users集合,但您不希望用户的密码或包含敏感信息的任何其他字段在客户端上可见。在这种情况下,当您发布该集合时,您可以这样做:
Meteor.publish('secureUsers', function() {
if(!this.userId) return null;
return Meteor.users.find(this.userId,
{fields:
{
someNonSensitiveField: 1, /* avatar information, for example */
otherNonSensitiveField: 1
}
}
);
});
这样,只有指定的字段才会包含在集合对象中,而忽略了其他可能敏感的数据。另一种方法是指定哪些字段是敏感的并明确排除它们。
HTH!