TypeORM регистрирует в консоли, но не возвращает - PullRequest
0 голосов
/ 04 сентября 2018

Я создаю базовый API с помощью Koa, TypeORM и Postgres. Следующий запрос внутри запроса @Get регистрирует случайный результат на консоли , но не возвращает его.

@Get("/motivations/random")
async getRandomMotivation() {

    const randomFunc = async () => {

        try {
            let entityManager = await Motivation.getRepository()
                .createQueryBuilder()
                .select("motivations.id")
                .from(Motivation, "motivations")
                .orderBy("RANDOM()")
                .limit(1)
                .getOne()

            console.log("__testing: ", entityManager)
            return await entityManager
        }
        catch (error) {
            console.log("___errorrrrr: ", error)
        }

    }

    return await randomFunc()
}

Когда я запускаю сервер, он сначала возвращает ошибку ConnectionNotFoundError: Connection "default" was not found., затем он фактически загружает сервер и базу данных со всеми таблицами. Затем я вызываю правильную конечную точку, она выводит случайный результат на консоль, и когда он пытается вернуть результат, он возвращает следующее:

Connected to Postgres with TypeORM
Listening on port 4000 @ 22:16
query: SELECT "motivations"."id" AS "motivations_id" FROM "motivations" "Motivation", "motivations" "motivations" ORDER BY RANDOM() ASC LIMIT 1
__testing:  Motivation { id: 40 }
query: SELECT "Motivation"."id" AS "Motivation_id", "Motivation"."motivation" AS "Motivation_motivation", "Motivation"."user_id" AS "Motivation_user_id" FROM "motivations" "Motivation" WHERE ("Motivation"."id" = $1) -- PARAMETERS: [null]
query failed: SELECT "Motivation"."id" AS "Motivation_id", "Motivation"."motivation" AS "Motivation_motivation", "Motivation"."user_id" AS "Motivation_user_id" FROM "motivations" "Motivation" WHERE ("Motivation"."id" = $1) -- PARAMETERS: [null]
error: { error: invalid input syntax for integer: "NaN"
.... }

Как видите, он запускает запрос случайного результата и записывает его на консоль. Затем он выполняет еще два запроса с пустыми параметрами ...

Почему TypeORM пытается выполнить два дополнительных запроса? Как мне преодолеть эту проблему?

1 Ответ

0 голосов
/ 07 сентября 2018

Я нашел проблему. У меня было два пути - /motivations/:id и /motivations/random. Однако я забыл добавить проверку номеров на /:id, и поэтому всякий раз, когда я звонил /random, сервер также вызывал /:id, но без каких-либо параметров. После того, как я изменил путь к /motivations/:id([0-9]+), проблема исчезла. Также оказалось, что запрос к базе данных работал с самого начала ...

...