Ошибка типа данных в knex
Подскажите, пожалуйста, знатоки!
Вот такой запрос к бд: const [newItemdenUuid] = await DB.from('itemdens.itemden').where('core_uuid', itemdenID).whereNot('itemden_uuid', itemdenID).select('itemden_uuid'); Вот такая ошибка: error: select "itemden_uuid" from "itemdens"."itemden" where "core_uuid" = $1 and not "itemden_uuid" = $2 - invalid input syntax for type uuid: "{"f7b434d4-fce8-44d0-be17-b87429c6ff33"}" почему не нравится тип uuid? |
Наверное потому что у тебя в переменной itemdenID лежит '{"f7b434d4-fce8-44d0-be17-b87429c6ff33"}' вместо 'f7b434d4-fce8-44d0-be17-b87429c6ff33'.
|
Цитата:
Непонятно только, почему селектом из бд подставляется объект, а не UUID . Объект надо как-то конвертировать в тип Uuid? |
Diadema, по knex ничего не знаю, но по логике - select возвращает найденные rows, т.е. набор рядов с выбранными cells(колонками), а не значение одной cell одной row.
Могу предположить, что тут возвращает он массив объектов(т.к. может быть выбрано больше одной cell), и в данном случае что-то типа: [{"itemden_uuid": "f7b434d4-fce8-44d0-be17-b87429c6ff33"}], т.к. найден один row и выбран один cell под именем itemden_uuid в нём. Получить само значение, следовательно, надо либо руками: const [{itemden_uuid: newItemdenUuid}] = await DB .from('itemdens.itemden') .where('core_uuid', itemdenID) .whereNot('itemden_uuid', itemdenID) .select('itemden_uuid');, либо используя какие-то модификаторы knex(смотреть в документации). |
Спасибо, но та же ошибка(((
|
Diadema, так ошибка в том что передаёте а не в том, что получаете.
Надо исправлять место где первый itemdenID берёте. Ну или так как-то: const [{itemden_uuid: newItemdenUuid}] = await DB .from('itemdens.itemden') .where('core_uuid', itemdenID.itemden_uuid) .whereNot('itemden_uuid', itemdenID.itemden_uuid) .select('itemden_uuid'); Но тут не уверен - хз, что там на самом деле у вас в itemdenID. |
Цитата:
Попробовала обернуть его вот так: const [{itemdenID: newItemden}] = itemdenID; Пишет, что undefined. |
Ну значит так:
const [{itemden_uuid: newItemdenUuid}] = await DB .from('itemdens.itemden') .where('core_uuid', itemdenID[0].itemden_uuid) .whereNot('itemden_uuid', itemdenID[0].itemden_uuid) .select('itemden_uuid'); А лучше изучить js: работу c массивами, работу с объектами, console.log, debugger... "Пробовать" всякую абра-кадабру можно очень долго. |
Часовой пояс GMT +3, время: 03:03. |