Meteor上有错误的同步问题
Synchronisation issue with error on Meteor
嘿,我在Meteor应用程序上遇到了管理错误的问题,我搜索了这类事情,发现了一些关于同步功能的主题,但我无法解决我的问题。在我的客户端,我调用了一个方法,需要在执行之前得到结果。我的客户端:
onSubmit: function(doc){ // Gestion du formulaire d'inscription
var error = null;
var title = doc.title;
var content = doc.content;
var formData = {
title: title,
content: content
};
//get the captcha data
var captchaData = grecaptcha.getResponse();
Meteor.call('createCPDM', formData, captchaData, function(err){
if(err){
error = new Error("Une erreur s'est produite");
}
});
if(error === null){
this.done(); // Appelle onSuccess
}
else{
this.done(error); // Appelle onError
}
// reset the captcha
grecaptcha.reset();
return false;
},
我的服务器端:
createCPDM: function(formData, captchaData) {
var ip = "0.0.0.0";
var verifyCaptchaResponse;
if (!this.connection.clientAddress) {
verifyCaptchaResponse = reCAPTCHA.verifyCaptcha(ip, captchaData);
}
else {
verifyCaptchaResponse = reCAPTCHA.verifyCaptcha(this.connection.clientAddress, captchaData);
}
if (!verifyCaptchaResponse.success) {
throw new Meteor.Error('422', 'reCAPTCHA Failed: ' + verifyCaptchaResponse.error);
}
else {
var CPDMID = CPDM.insert(formData);
}
return true;
}
所以在继续之前,我需要知道我是否有错误。。。
感谢您的帮助!!!
ES6
onSubmit: function(doc){ // Gestion du formulaire d'inscription
// preventDefault() ????
var formData = {
title: doc.title,
content: doc.content
};
//get the captcha data
var captchaData = grecaptcha.getResponse();
Meteor.call('createCPDM', formData, captchaData, err => {
if(err) {
// Appelle onError
return this.done(new Error("Une erreur s'est produite"));
}
this.done(); // Appelle onSuccess
grecaptcha.reset();
});
}
ES5
onSubmit: function(doc){ // Gestion du formulaire d'inscription
// preventDefault() ????
var formData = {
title: doc.title,
content: doc.content
};
//get the captcha data
var captchaData = grecaptcha.getResponse();
var self = this
Meteor.call('createCPDM', formData, captchaData, function(err) {
if(err) {
// Appelle onError
return self.done(new Error("Une erreur s'est produite"));
}
self.done(); // Appelle onSuccess
grecaptcha.reset();
});
}
Meteor.call
从不同步返回服务器端返回值。
如果您想在Meteor中使用服务器端计算的结果,唯一的方法是使用回调函数。引用文件:
如果在最后一个参数中包含回调函数[…]该方法将异步运行:在特别的,不会抛出异常。当方法为complete[…]将使用两个参数调用回调:error以及结果。
您可能会显示一个面向用户的通知(就像一个旋转的轮子),直到回调得到服务器端的结果。
相关文章:
- 主干网.与Safari同步问题
- 使用具有同步和启动功能的弹性滑块时出现问题
- 同步 Ajax 请求将导致页面上出现任何问题
- Meteor上有错误的同步问题
- Nodejs请求之后是请求同步问题
- javascript中同步函数执行中的问题
- 同步跨度和文本区域滚动条-滚动条稍微偏离和粘贴问题
- 商店同步问题
- 将 JSON 文件读取到对象的全局数组中 - 范围和同步问题
- 从回调填充本地数组:同步问题
- 与异步和同步函数相关的未定义javascript函数的问题
- JavaScript-与第三方API的同步问题
- 同步javascript中的问题
- 谷歌地图v3与MeteorJS加载同步问题
- 客户机JSP页面上同步服务器时间的问题
- 棋盘游戏在javascript中,同步问题卡
- 通过WebSockets同步对象时的问题
- instagram节点同步问题
- 这是同步问题吗?使用谷歌翻译来连锁翻译单词
- Javascript函数中的同步问题