方法调用“插入所有短信数据”多次运行,我尝试防止使用计数器变量,但在客户端运行一次,在服务器端运行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(),
});
}
},
答案 0 :(得分:0)
流星方法可以从前端调用,要求后端做一些事情。后端方法执行Meteor.call
是没有意义的,因为它已经在后端。它会工作,但是会遇到麻烦,因为计数器没有按预期传递。
使您的方法仅在服务器上起作用,并且仅循环处理数据,完成所有工作,而不是像您一样将其分解成碎片。