【发布时间】:2017-01-24 21:04:51
【问题描述】:
我已经使用流星发布和订阅方法与客户端和服务器进行交互。现在根据我的场景,我正在使用 D3 js 生成条形图,一旦将数据输入到 mongo db 集合中,我就会使用客户端函数生成条形图。我的问题是发布和订阅反应太慢。即使我限制了 mongodb 返回的文档数量,问题仍然存在。它也不一致,即它有时会在 1 秒内做出反应,而其他时候则需要 4-5 秒。请指导我该做什么以及我的实施有什么问题。
这是服务器端代码,
Test = new Mongo.Collection("test")
Meteor.publish('allowedData', function() {
return Test.find({});
})
这是客户端代码,
Test = new Mongo.Collection("test")
Meteor.subscribe('allowedData');
Meteor.setTimeout(function() {
Test.find().observe({
added: function(document){
//something
},
changed:function(){
//something
},
removed:function(){
//something
},
})
【问题讨论】:
-
我觉得从通用文件中导入
Test会更优雅 -
您是否检查了 TimeLine(在 Chrome 浏览器中)以查看每次操作的加载时间?
-
您将所有
Test文档发布到客户端,因此毫无疑问会很慢。您应该考虑使用方法来为图表生成数据 -
使用 Meteor 方法只获取您需要的信息。从客户端完全删除
Test.find().observe()。 -
实际上我需要完成的是,每当在 mongoDB 中添加一个文档时,我都需要在条形图中显示它。所以我需要它是反应性的,因此我使用了 observe()。
标签: javascript mongodb meteor d3.js