Как можно выполнить асинхронный запрос c Knex при остановке выполнения оператора отладчика? - PullRequest
0 голосов
/ 29 апреля 2020

Если я жестко закодирую и await оператор запроса Knex в коде и console.log() его до нажатия debugger, я получаю ожидаемый результат. Однако после нажатия на оператор debugger я хотел бы иметь возможность выполнить некоторые дополнительные запросы Knex, но я либо не получил ожидаемый ответ, либо получил ошибку. Например, вот некоторые операторы, которые я пробовал в консоли во время остановки в операторе отладчика, а также выходные данные:

knex("users").where({username: "raj"})

Builder {client: Client_PG и: Builder, _single: Object, _statements: Array (1), _method: "select",…}

console.log(knex("users").where({username: "raj"}))

Builder {client: Client_PG и: Builder, _single: Object, _statements: Array (1) , _method: "select",…}

await knex("users").where({username: "raj"})

SyntaxError: ожидание допустимо только в asyn c function

await console.log(knex("users").where({username: "raj"}))

SyntaxError: ожидание допустимо только в asyn c функция

console.log(await knex("users").where({username: "raj"}))

SyntaxError: отсутствует) после списка аргументов

Я использую VSCode, поэтому я пытался многократно нажимать кнопки Step Over и Step Into (пока не закончился полный стек) также, но я так и не получил ожидаемый вывод в консоли.

Что было бы правильным способом сделать это?

1 Ответ

0 голосов
/ 01 мая 2020

Ошибка, которую вы видите, потому что каждый await должен вызываться в функции async.

Я не уверен, где вы пытаетесь выполнить запрос, но вы можете попробовать синтаксис await верхнего уровня :


const executeQuery = async () => {
    try {
        const result= await knex("users").where({username: "raj"})
        console.log({result})
    } catch (error) {
        console.log({error})
    }
})

executeQuery()

Или то же самое с Выполнение промежуточной функции Синтаксис (на мой взгляд, трудно читаемый):

(async () => {
    try {
        const result= await knex("users").where({username: "raj"})
        console.log({result})
    } catch (error) {
        console.log({error})
    }
})()
...