Почему аргументы функции nodejs ведут себя по-разному при явном вызове? [Дубликат]

1

Я рефакторинг моего приложения nodejs и пытаюсь сделать код более чистым, тогда я столкнулся с этой проблемой при вызове функции напрямую.

это работает:

router.route('/').get(({ query }, res, next) => {
ItemsLogic.getItems(query)
  .then((items) => res.json(items))
  .catch(next)

})

но это порождает ошибку:

router.route('/').get(({ query }, res, next) => {
ItemsLogic.getItems(query)
  .then(res.json)
  .catch(next)

})

ошибка: "Невозможно прочитать свойство" приложение "неопределенного". Его внутри json() функция экспресс-ответа и имеет отношение к this объекту в этом методе, который по какой-то причине не определен.

  • 0
    @abhishekkannojia - Вы не можете передавать «заявления» (если вы не поместите их в строки для eval ). Значение res.json является функцией.
  • 0
    @Quentin Да, ты прав. Не понял, что res.json - это функция. Я думаю, это то, что происходит, когда вы не проходите код должным образом. Спасибо за разъяснение.
Показать ещё 6 комментариев
Теги:
express
promise
es6-promise

1 ответ

0

Значение this внутри функции зависит от того, как она называется.

С учетом res.json(); : this res.

Для var foo = res.json; foo(); var foo = res.json; foo(); : this не res.

Функция json заботится о значении this. res.json вы берете значение json (функция) и отключаете его от res же, как второй пример выше.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню