express -graphql - как я могу передать res объект пользовательской функции в контексте? - PullRequest
0 голосов
/ 01 февраля 2020

В моей конфигурации у меня есть следующее: -

expressGraphQL((req, res) => ({
...,
context: {
req,
res,
database,
},
}))

Я хотел бы иметь возможность передавать res в пользовательскую функцию в контексте, например так: -

expressGraphQL((req, res) => ({
...,
context: {
req,
res,
database,
myCustomFunction: (res) => {
// do something with res object here
}
}))

Однако, когда я получаю myCustomFunction из контекста в резольвере и запускаю, res не определено.

Я знаю, что могу извлечь res из контекста вместе с myCustomFunction и вызвать myCustomFunction (res), но я хотел бы просто иметь возможность сделать myCustomFunction ().

Есть ли способ сделать это? Спасибо.

1 Ответ

1 голос
/ 01 февраля 2020

Поскольку вы определяете функцию внутри функции, которая уже передана res в качестве параметра, просто используйте этот параметр. Это означает, что вы должны удалить аргумент res из сигнатуры myCustomFunction, в противном случае вы получите shadowing переменную res, которую вы действительно хотите использовать.

expressGraphQL((req, res) => ({
  ...,
  context: {
    ...
    myCustomFunction: () => {
      console.log(res)
    },
  },
}))

You можно определить myCustomFunction и в другой области, в этом случае вы бы сделали:

function myCustomFunction (res) {
  console.log(res)
}

expressGraphQL((req, res) => ({
  ...,
  context: {
    ...
    myCustomFunction: () => myCustomFunction(res),
  },
}))
...