Я пытаюсь использовать Lab для проверки кода. Однако по какой-то причине, когда я добавляю правильную полезную нагрузку, мой код ничего не делает. Обещание не кажется, чтобы получить вернулся:server.inject с hapijs не возвращает правильный ответ
'use strict';
const Server = require('../server');
const options = {
method: 'POST',
url: '/api/users',
payload: JSON.stringify({ mobile: '3342329224' })
};
Server.inject(options, (response) => {
if (response) {
console.log(response.payload);
}
else {
console.log('Nada');
}
});
Если я изменить код так, что нет полезной нагрузки или она не соответствует моей проверки дзёи то это я получаю ответ:
{"statusCode":400,"error":"Bad Request","message":"child \"mobile\" fails because [\"mobile\" must be larger than or equal to 10]","validation":{"source":"payload","keys":["mobile"]}}
module.exports = {
method: 'POST',
path: '/api/users',
config: {
auth: false,
handler: (request, reply) => {
//looks up payload in db otherwise creates entry
User.findOne({
mobile: request.payload.mobile
}, (err, user) => {
if (err) {
throw err;
}
if (user) {
// uses twillio to send code
sendVerificationText(user, (err, result) => {
if (err){
throw err;
}
if (result === true) {
// this is what I expect to happen when testing
reply('code sent').code(201);
}
else {
throw Boom.badRequest(err);
}
});
}
else {
// the user should exist so....
const user = new User();
user.mobile = request.payload.mobile;
user.admin = false;
user.save((err, user) => {
if (err) {
throw Boom.badRequest(err);
}
sendVerificationText(user, (err, result) => {
if (err){
throw err;
}
if (result === true) {
reply('code sent').code(201);
}
else {
throw Boom.badRequest(err);
}
});
});
}
});
},
// Validate the payload against the Joi schema
validate: {
payload: createUserSchema
}
}
};
Я должен упомянуть, что этот код работает, когда я запускаю сервер и проверяю api вручную. Я не могу понять.
Я предлагаю использовать что-то вроде инструментов для создания хрома для проверки этот фактический запрос, который вы отправляете на сервер, и сравнить его с запросом, который вы используете для проверки вручную. Скорее всего, что-то немного отличается от генерируемого запроса. –
Я не знаком с hapijs. Но первое мое предположение, прочитав документацию, возможно, ваш серверный код должен быть: request.мобильный вместо запроса.payload.mobile? Просто догадываюсь, что я могу уйти. –
Я ухожу. Я сделал небольшое исследование и попытался создать аналогичный проект. Я нашел проблему, которая заставляет валидацию joi зависать. Проводя ответ с этой находкой. –