Javascript 将服务器端计算返回到客户端而不使用集合

Javascript 将服务器端计算返回到客户端而不使用集合,javascript,meteor,Javascript,Meteor,数据在客户端生成并保存在本地集合中: ListLocal = new Mongo.Collection(null); let seed = [{ name: "A", value: 1 }, { name: "B", value: 2 }, { name: "C", value: 3 }]; if (ListLocal.find().count() === 0) {

数据在客户端生成并保存在本地集合中:

ListLocal = new Mongo.Collection(null);

let seed = [{
        name: "A",
        value: 1
    }, {
        name: "B",
        value: 2
    }, {
        name: "C",
        value: 3
    }];

    if (ListLocal.find().count() === 0) {
        ListLocal.forEach(function(entry) {
            ListLocal.insert(entry);
        });
    };
然后,它将在客户端传递到服务器进行进一步处理:

Template.home.events({
    "click .btn-process": function(event) {
        event.preventDefault();
        let localData = ListLocal.find({}).fetch();

        Meteor.call("processData", localData);
    }
});  
服务器接受数据并将其传递给服务器端方法,该方法对数据进行处理,例如,将传递对象的所有值加倍:

Meteor.methods({
    processData(localData) {
        calculateDouble(localData);
    }
});

calculateDouble(localData) {
    // ...
    return calculatedData;
}
现在,我想在客户端显示此calculatedData,而不将其保存在服务器端数据库中


问题:如何将此数据传递给客户端

只需从方法返回数据:

Meteor.methods({
    "processData": function(localData) {
        return calculateDouble(localData);
    }
});

calculateDouble(localData) {
    // ...
    return calculatedData;
}
要在事件中调用该方法,请执行以下操作:

Template.home.events({
    "click .btn-process": function(event) {
        event.preventDefault();
        let localData = ListLocal.find({}).fetch();

        Meteor.call("processData", localData, function(error, result){
           //handle what you need to do with the result here.
        });
    }
});  

只需从方法返回数据:

Meteor.methods({
    "processData": function(localData) {
        return calculateDouble(localData);
    }
});

calculateDouble(localData) {
    // ...
    return calculatedData;
}
要在事件中调用该方法,请执行以下操作:

Template.home.events({
    "click .btn-process": function(event) {
        event.preventDefault();
        let localData = ListLocal.find({}).fetch();

        Meteor.call("processData", localData, function(error, result){
           //handle what you need to do with the result here.
        });
    }
});  

为什么不直接从您的方法中返回它呢?
calculateDouble
sync还是async?基本值来自数据库并保存在本地集合中。在那里,每个用户都可以根据自己的条件修改这些值。为了进一步评估,这些值将传递给服务器,重新计算,然后再传递回客户端以显示。所以我的问题是:如何在模板助手函数中使用返回值?为什么不直接从方法中返回它?
calculateDouble
sync还是async?基本值来自数据库并保存在本地集合中。在那里,每个用户都可以根据自己的条件修改这些值。为了进一步评估,这些值将传递给服务器,重新计算,然后再传递回客户端以显示。所以我的问题是:如何在模板助手函数中使用返回值?谢谢-我的问题是:如何从模板助手访问此方法?因为我没有数据库来发布方法的返回值。你可以把它放在客户端的
会话
变量中,或者放在被动变量中,或者放在全局变量中。这样就行了!谢谢我刚刚在回调函数中添加了error参数,否则它只返回“undefined”@MichelFloyd-如何使用会话变量?不使用Meteor.call?
Meteor.call(“processData”,localData,函数(结果){Session.set(“myVar”,结果)})谢谢-我的问题是:如何从模板助手访问此方法?因为我没有数据库来发布方法的返回值。你可以把它放在客户端的
会话
变量中,或者放在被动变量中,或者放在全局变量中。这样就行了!谢谢我刚刚在回调函数中添加了error参数,否则它只返回“undefined”@MichelFloyd-如何使用会话变量?不使用Meteor.call?
Meteor.call(“processData”,localData,函数(结果){Session.set(“myVar”,结果)})