Promisify Joi: компиляция не определена - PullRequest
0 голосов
/ 28 февраля 2019

Я хочу дать обещание Joi.validate.

Исходная функция:

Joi.validate(message, schema, (err, success) => {})

Я пытался сделать:

const Joi = require('joi');
const Promise = require('bluebird');
const validate = Promise.promisify(Joi.validate);

И я звоню с:

validate(message, schema)
.then(() => console.log('ok'))
.catch(err => console.log('ERRRR', err.message));

Но я получаю эту ошибку:

Cannot read property 'compile' of undefined

Вы знаете, как мне этого добиться?Спасибо

1 Ответ

0 голосов
/ 03 марта 2019

Проблема в том, что контекст теряется при обещании.Так попробуйте это:

const validate = Promise.promisify(Joi.validate).bind(Joi);
validate(message, schema)
  .then(() => console.log('ok'))
  .catch(err => console.log('ERRRR', err.message));

Или это:

const pJoi = Promise.promisifyAll(Joi);
pJoi
  .validate(message, schema)
  .then(() => console.log('ok'))
  .catch(err => console.log('ERRRR', err.message));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...