javascript - 如何加快meteor中的mongoDB查询响应时间?

标签 javascript jquery node.js mongodb meteor

我的集合中有 15K 条记录,最少有 40 个字段,我创建了一个从记录生成的表。在此表中,我有各种字段,如图所示(来自 Excel 工作表)。 enter image description here

/client/main.js

Template.GetTable.helpers({
    'getTotalData':function(key1,key2){

        console.log("-------inside totalData()---------");
        const projects1 = Template.instance().distinct1.get();
        var filter1= _.map(projects1, col_8 => {
          return {col_8};
        });
        q={};
        p={};
        console.log(filter1);
        console.log(JSON.stringify(q));
            //var queryData=test.find(q).fetch();
            Meteor.call('getCountData',"all",function(err,count){
                if(err) 
                    console.log("Failed to call meteor..!");
                else{
                    console.log(count);
                    return count;
                }
            });
        },
  });

/server/main.js

Meteor.methods({
'getCountData':function(type){
              return test.find({"col_17" : " Query->:#####->x","col_8": { $regex: /^CQI?/i}}).count();  
    },
});

我只是为了测试而测试,我知道如何从数据库获取计数。 我的问题是,在所有渲染和助手被调用之后,UI 将在没有任何计数数据的情况下加载。但是,当我检查调试器时,我使用“console.log()”打印了正确的计数,并且 UI 未更新。 我该如何解决这个问题?或者有什么有效的方法可以解决这个问题吗?

最佳答案

UI 问题是您正在助手内部进行 Meteor 调用,并将调用结果返回给自身,而不是助手。

这是您正在做什么以及应该做什么的示例。

不应该:

Template.GetTable.helpers({
'getTotalData':function(key1,key2){
        Meteor.call('getCountData',"all",function(err,count){
            if(err) 
                console.log("Failed to call meteor..!");
            else {
                return count; // Being returned to this function, not helper fuction
            }
        });
    },

});

应该:

var recVar = new ReactiveVar(false);
Template.GetTable.onCreated({
    Meteor.call('getCountData',"all",function(err,count){
        if(err) 
            console.log("Failed to call meteor..!");
        else {
            recVar.set(count);
        }
    });
 });
 Template.GetTable.helpers({
    'getTotalData':function(key1,key2){
        return recVar.get();
    },
 });

关于javascript - 如何加快meteor中的mongoDB查询响应时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50438770/

相关文章:

javascript - save 方法出现意外行为

javascript - setInterval 无法按预期使用 javascript oops

jquery - 停止传播不适用于可点击 div 内的链接

javascript - 使用 JSOM 从 Sharepoint 2013 中的共享文档获取文件内容

node.js - 如何组织我的 yarn 包

node.js - 用于 Windows 构建的 Electron 和 Cordova

node.js - 为什么 Express res.render 在控制台中转储渲染输出(EJS 模板)?

javascript - Firefox 最新更新 - Javascript 问题

javascript - 新的 javascript ES6 模块术语中合格和不合格的导入有什么区别?

javascript - 用图像替换文字聊天室