流星循环调用。如何防止多次通话?

时间:2019-08-03 17:19:05

标签: reactjs meteor

方法调用“插入所有短信数据”多次运行,我尝试防止使用计数器变量,但在客户端运行一次,在服务器端运行x时间,如图所示,因此将数据添加到db我不想要的多个音色,应该只添加一次到数据库。我还想在方法调用“插入所有短信数据”中添加另一个调用,该调用应以x作为循环。我困在这里。 流星1.8反应16.8

imports / api / kuser.js

'Find all numbers' (smsText) {
        if(!this.userId) {
            throw new Meteor.Error('not-authorized');
         }
         let counter = 0;
          return userKisandb.find({
            userId: this.userId
         }).fetch().map((Mob) => {
            // return Mob.Mnumber
            if(Mob.Mnumber) {

                Meteor.call('Send to all',Mob.Mnumber,smsText,(err,resp) => {
                  //sms.js
                  if(err){
                      console.log("send all numbers error2", err);
                    } else {
                      console.log("send all numbers ", resp);

                      if(counter === 0) {
                        Meteor.call('Insert All sms data',smsText,counter,(err,resp1) => {
                          //get inserted data id
                          //allSmsdb
                          if(err){
                              console.log("Insert All sms data error", err);
                            } else {
                              console.log("this should run only once ",counter);

                  //Another call to be added which should run x times
                            }
                          })
                          counter++
                        }

                    }

                  });

            } //Mob.Mnumber

         });
    },

方法1是

'Send to all'(mob,text) {
      return "sucess";
  },

方法2是

'Insert All sms data' (smstext,counter) {
        if(!this.userId) {
            throw new Meteor.Error('not-authorized');
         }
         console.log("Inserted same data x times",counter);
         if(counter === 0) {
            return allSms.insert({
                smstext,
                userId: this.userId,
                updatedAt: moment().valueOf(),
            });
         }

    },

输出为 enter image description here

1 个答案:

答案 0 :(得分:0)

流星方法可以从前端调用,要求后端做一些事情。后端方法执行Meteor.call是没有意义的,因为它已经在后端。它会工作,但是会遇到麻烦,因为计数器没有按预期传递。

使您的方法仅在服务器上起作用,并且仅循环处理数据,完成所有工作,而不是像您一样将其分解成碎片。