在不使用集合的情况下将服务器端计算返回到客户端

Return server-side calculation to client without using a collection

本文关键字:计算 服务器端 返回 客户端 情况下 集合      更新时间:2023-09-26

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

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;
}

现在我想在客户端显示此计算数据,而不将其保存在服务器端数据库中。

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

只需从方法返回数据:

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.
        });
    }
});