我正在研究数据库监控App。在这个应用程序中,用户可以接着进行多种查询。出于这个原因,我每次订阅(仅提取他/她需要的信息)用户进行查询,但是似乎客户端的集合没有得到更新或刷新这是我的代码:
//client side
var jobs_completed = new Meteor.Collection("GE_qstat_jobs_completed");
var criteria = {
sort: {
submission_time: 1
},
limit: 500,
skip: 0,
fields: {
ClusterId: 0
}
};
...
...
...
...
var subscribeToQueued = function (){
Meteor.subscribe('queued', query, criteria, function(){
console.log(" queued -> DONE");
var myCursor = jobs_queued.find({});//<< the information is not updated in here
var rows_num = myCursor.count();
var tableInfo = myCursor.fetch();
displayTable(tableInfo, rows_num);
});
}
...
...
...
...
var displayTable = function(tableInfo, rows_num){
var i = 1;
tableInfo.forEach(function (row) {
displayRow(row, i);
i++;
});
...
...
...
...
});
//server side
Meteor.publish("queued", function(query, criteria){
return jobs_queued.find(query, criteria);
});
query
取决于用户的输入,但看起来像query = {}
或类似
query = {
submission_time: {
$gte: Wed Aug 06 2014 00:00:00 GMT-0400 (EDT),
$lt: Wed Aug 06 2014 23:59:59 GMT-0400 (EDT)
},
JB_owner: {
$in:["ahmei2", "alcsuo"]
},
JB_project: {
$in:["acetyl", "bcf"]
},
JB_pe: "ivybridge"
}
所以,当用户发出新请求时,它显示的是什么,它是上一个查询的内容,我知道如何解决这个问题???
答案 0 :(得分:1)
我认为publish/subscribe
模型对您的用例不利。如果您计划长时间观看特定光标,则订阅很有用。如果您的用户只想测试特定查询的结果,我相信使用简单的方法调用就可以了。至少它在概念上要简单得多。