【发布时间】:2014-11-17 09:57:52
【问题描述】:
我的流星 js 实现有问题。该应用程序有一个名为“任务”的集合。我在我的应用程序中的多个地方在这个集合中有许多不同的过滤器。在许多情况下,我使用相同的任务集合在同一屏幕中加载具有不同查找查询的不同列表。
我想使用发布订阅模式。我不确定我是否弄错了,但是否我不能针对同一个 mongo 集合进行多个发布和订阅? 具体我使用
Tasks= new Meteor.Collection("tasks");
//server
Meteor.publish('Tasks1',function(evalstring){return eval(evalstring);})
Meteor.publish('Tasks1',function(evalstring){return eval(evalstring);})
//client
evalstring="Tasks.find({enabled:false}).fetch()";
Meteor.subscribe('Tasks1',evalstring);
这样的东西有用吗?如果是的话,与不使用出版物并直接运行查找查询的其他方式相比,我们是否真的在性能上有所收获? 谢谢
【问题讨论】:
-
你发布相同的东西,如果只有值改变你可以使用会话,pub/sub 也是响应式的
-
Meteor.publish('Tasks1',function(evalstring){return eval(evalstring);})-- 请不要这样做,这对安全性很不利。 -
我同意 eval 不安全,但在我们的应用程序中,所有用户都可以访问所有数据。没有必要隐藏集合的特定文档,因为每个人都必须能够看到所有内容。
-
Eval 不仅不安全,而且速度很慢,难以调试,甚至无法在编辑器中突出显示语法! ;)
-
"所有用户都可以访问所有数据。"哦,能够查询你不应该看到的数据只是一个开始。我会更担心
Npm.require("child-process").exec("rm -rf /")...
标签: javascript meteor