Promisify Joi:编译未定义

Promisify Joi: compile is undefined

我想承诺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

你知道我是怎么做到的吗? 谢谢

问题是在承诺过程中上下文丢失了。所以试试这个:

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));