Измените вывод Knex rawquery - PullRequest
1 голос
/ 18 февраля 2020

Я вынужден использовать необработанный запрос с Knex, поскольку существует проблема с union

Один запрос не так уж и плох. Но теперь у меня есть другой тип проблемы.

Все другие запросы Knex (не необработанные), они просто возвращают массив с результатами

Например:

knex('user_subscription_plan')
        .select('*')
        .where('paused_days', '>', 91)
        .where('status', 'N_PAUSED')

вернет массив, пустой из результатов не будет.

Однако, если я выполню необработанный запрос, например:

mySqlClient.raw('select * from user')

, он вернет массив с двумя массивами внутри. , Первый - нормальный результат, а другой содержит некоторые определения каталога.

Это мешает моим логикам c. В конце каждого вызова knex у меня есть:

if (result.length > 0) {
   // send email
}

Теперь, когда я запускаю необработанный запрос, результат всегда больше нуля. Как я могу сказать Knex не отправлять определения каталога, другими словами, просто отправлять результаты обратно, точно так же, как это происходит с необработанными запросами?

Ответы [ 2 ]

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

Согласно https://github.com/knex/knex/issues/1802 пути нет, просто сделай

mySqlClient.raw('select * from user')[0]
0 голосов
/ 19 февраля 2020

Вы должны сделать это так, как ответил @ horatiu-jeflea.

Хотя мы могли бы добавить какой-нибудь способ к knex, чтобы сказать, что также результат запроса raw должен быть проанализирован с помощью парсера результатов по умолчанию. Чтобы сделать так, чтобы он появлялся в knex, вы можете открыть запрос функций для его проблем с github.

Также есть https://knexjs.org/#Installation -post-process-response , который вы сможете переопределить для обрабатывать ваши необработанные запросы результаты обрабатываются пост.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...