【问题标题】:Joi Promises with ES returning errJoi Promises with ES 返回错误
【发布时间】:2017-04-05 06:41:18
【问题描述】:
              registerController.validate(request.payload).then((err) => {
                if(err === null) {
                    reply(true);
                }
            }); 
          validate: function (data) {
            return new Promise ((resolve) => {
                Joi.validate({
                    username: data.username,
                    password: data.password,
                    email: data.email
                }, RegisterSchema,function () {
                    resolve(err);
                });

});

}

我确定 err 为空 :D 我做错了什么?我正在尝试使用这个和蓝鸟,但没有任何效果:/

【问题讨论】:

  • 你没有在任何地方声明err,所以它是undefined(并且在严格模式下抛出)。大概你打算在回调中使用一个参数?
  • 你不应该resolve你的承诺有一个错误,你应该reject它有一个错误(否则履行它)。
  • 我需要检查错误(来自 joi.validate 的错误)是否为空.. :/ 然后我将检查验证是否已完成,没有任何错误或错误(当我在“RegisterSchema”中声明错误时, function (err)" 什么都没发生
  • 来自 joi.validate 的错误”是什么意思?那张支票在哪里?

标签: javascript es6-promise joi


【解决方案1】:

你没有在任何地方声明err,所以它是undefined(并在严格模式下抛出)。大概你的意思是在回调中使用参数?

另外你不应该resolve你的承诺有一个错误,你应该reject它有一个错误(否则履行它)。所以使用

validate: function (data) {
    return new Promise((resolve, reject) => {
        Joi.validate(data, RegisterSchema, function(err) {
            if (err) reject(err);
            else resolve(true); // or a result if there is one?
        });
    });
}

registerController.validate(request.payload).then(reply, err => {
    replyError(…) // or something
});

【讨论】:

    猜你喜欢
    • 2020-01-26
    • 1970-01-01
    • 1970-01-01
    • 2014-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-12
    • 2019-08-20
    相关资源
    最近更新 更多