Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Meteor 如何在每次从服务器更新集合时调用函数?_Meteor_Angular Meteor - Fatal编程技术网

Meteor 如何在每次从服务器更新集合时调用函数?

Meteor 如何在每次从服务器更新集合时调用函数?,meteor,angular-meteor,Meteor,Angular Meteor,例如,在中,当另一个用户更改Paries集合时,此控制器将自动更新Paries对象,但我们如何捕获此更新并运行一些控制器逻辑 this.helpers({ parties: () => Parties.find({}) }); 具体问题: 收到的答案并不能解决我的问题,因为更新时我需要执行的不是服务器逻辑或任何数据库操作。实际上,我需要运行的是控制器逻辑 在下面的示例中,如果表单未更改,我将禁用submit按钮。isFormChange函数将参与方与原始参与方进行比较。当参与方从服务器端

例如,在中,当另一个用户更改Paries集合时,此控制器将自动更新Paries对象,但我们如何捕获此更新并运行一些控制器逻辑

this.helpers({ parties: () => Parties.find({}) });
具体问题: 收到的答案并不能解决我的问题,因为更新时我需要执行的不是服务器逻辑或任何数据库操作。实际上,我需要运行的是控制器逻辑

在下面的示例中,如果表单未更改,我将禁用submit按钮。isFormChange函数将参与方与原始参与方进行比较。当参与方从服务器端更改时,我需要重新定义originalParty值。那我该怎么做呢

<form ng-submit="vm.updateParty()">
  <input type="text" ng-model="vm.party.name">
  <input type="submit" ng-disabled="!vm.isFormChanged()" value="Submit">
</form>
使用包在更新、追加、插入和删除之前或之后运行代码

myCollection.after.update(userId, doc, fieldNames, modifier, options){
  ...your code
}

如果在中有数据库功能,则可以在服务器上运行逻辑

例如:

Parties = new Mongo.Collection("parties");

if (Meteor.isClient) {
    // This code only runs on the client
    Meteor.subscribe("parties");
    /* a helper or event can run the Meteor.call() */
    var partyData = {}; // get partyData
    Meteor.call("insertParty", partyData,
        // callback function
        function (error, result) {
            if (error) { console.log(error); };
        });
}

if (Meteor.isServer) {
    // This code only runs on the server
    Meteor.publish("parties", function () {
        return Parties.find({});
    });
    Meteor.methods({
        insertParty: function (partyData) {
            // insert logic to run on partyData here
            Parties.insert(partyData);
        }
    })
}

谢谢你的回答,但请检查指定的问题。谢谢你的回答,但请检查指定的问题。
Parties = new Mongo.Collection("parties");

if (Meteor.isClient) {
    // This code only runs on the client
    Meteor.subscribe("parties");
    /* a helper or event can run the Meteor.call() */
    var partyData = {}; // get partyData
    Meteor.call("insertParty", partyData,
        // callback function
        function (error, result) {
            if (error) { console.log(error); };
        });
}

if (Meteor.isServer) {
    // This code only runs on the server
    Meteor.publish("parties", function () {
        return Parties.find({});
    });
    Meteor.methods({
        insertParty: function (partyData) {
            // insert logic to run on partyData here
            Parties.insert(partyData);
        }
    })
}