Как расширить класс AdonisJS Response?

Когда пользователь создает сообщение в моем приложении RESTful, я хочу установить код состояния ответа на 201.

Я следовал за документация и создал start/hooks.js следующим образом:

'use strict'                                                                                                                      

const { hooks } = require('@adonisjs/ignitor')                                                                                                   

hooks.after.httpServer(() => {                                                                                                                   
  const Response = use('Adonis/Src/Response')                                                                                                    

  Response.macro('sendStatus', (status) => {                                                                                                     
    this.status(status).send(status)                                                                                                             
  })                                                                                                                                             
})

Теперь в моем PostController.js у меня есть это:

 async store( {request, response, auth} ) {
   const user = await auth.current.user
   response.sendStatus(201)
 }

Но на этой конечной точке я получаю HTTP-код 500. Что я делаю неправильно?

Я заметил, что когда я бегу Response.hasMacro('sendStatus'), я получаю ложный.

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
0
430
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

На самом деле у Adonis уже есть это из коробки для всех кодов ответов...

Просто напишите response.created(.....).

Вы также можете использовать, например: .badRequest(), .notFound() и т.д.... Подробнее о: https://adonisjs.com/docs/4.1/response#_descriptive_methods

Я решил эту проблему вчера:

hooks.after.httpServer(() => {                                                                                                                   
  const Response = use('Adonis/Src/Response')                                                                                                    
  Response.macro('sendStatus', function (status) => {                                                                                                     
    this.status(status).send(status)                                                                                                             
  })                                                                                                                                             
})

Проверьте мой ответ... Это вообще не нужно. Вы добавляете крючок, который не нужен.

hlozancic 11.03.2019 13:45

Извините, я не проверил ссылку, которой вы поделились. Я отказываюсь принимать свой ответ и принимаю ваш. Спасибо

Begueradj 11.03.2019 13:53

Другие вопросы по теме