javascript - Meteor 上出现错误的同步问题

标签 javascript asynchronous 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();
    });
}

关于javascript - Meteor 上出现错误的同步问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36584472/

相关文章:

node.js - Meteor:将文档复制到另一个集合并在 'expirationDate' 之后从原始集合中删除

javascript - React-Typescript : I don't find the problem why my getCurrentTime Function won't work

node.js - Node 文件行数

javascript - 如何在数据内容属性中换行?

ios - 在 Swift 中使用 Facebook 异步显示工具包

node.js - 使用嵌套的 async.forEachSeries 和 async.waterfall 来控制 Lambda Node.js 代码的排序

javascript - Meteor 辅助函数与变量?

javascript - Meteor 中的复合集合

javascript - 如何将跨度的高度设置为同一行中跨度的最大高度?

javascript - 如何用javascript对 Angular 线移动 Sprite ?