Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 03.07.2024, 11:20
Новичок на форуме
Отправить личное сообщение для Diadema Посмотреть профиль Найти все сообщения от Diadema
 
Регистрация: 03.07.2024
Сообщений: 4

Ошибка типа данных в 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?
Ответить с цитированием
  #2 (permalink)  
Старый 03.07.2024, 15:58
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,590

Наверное потому что у тебя в переменной itemdenID лежит '{"f7b434d4-fce8-44d0-be17-b87429c6ff33"}' вместо 'f7b434d4-fce8-44d0-be17-b87429c6ff33'.
__________________
29375, 35
Ответить с цитированием
  #3 (permalink)  
Старый 03.07.2024, 16:37
Новичок на форуме
Отправить личное сообщение для Diadema Посмотреть профиль Найти все сообщения от Diadema
 
Регистрация: 03.07.2024
Сообщений: 4

Сообщение от Aetae Посмотреть сообщение
Наверное потому что у тебя в переменной itemdenID лежит '{"f7b434d4-fce8-44d0-be17-b87429c6ff33"}' вместо 'f7b434d4-fce8-44d0-be17-b87429c6ff33'.
Да-да, я уже догадалась.
Непонятно только, почему селектом из бд подставляется объект, а не UUID . Объект надо как-то конвертировать в тип Uuid?
Ответить с цитированием
  #4 (permalink)  
Старый 03.07.2024, 18:31
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,590

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(смотреть в документации).
__________________
29375, 35

Последний раз редактировалось Aetae, 03.07.2024 в 18:36.
Ответить с цитированием
  #5 (permalink)  
Старый 04.07.2024, 11:30
Новичок на форуме
Отправить личное сообщение для Diadema Посмотреть профиль Найти все сообщения от Diadema
 
Регистрация: 03.07.2024
Сообщений: 4

Спасибо, но та же ошибка(((
Ответить с цитированием
  #6 (permalink)  
Старый 04.07.2024, 13:16
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,590

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.
__________________
29375, 35
Ответить с цитированием
  #7 (permalink)  
Старый 05.07.2024, 09:39
Новичок на форуме
Отправить личное сообщение для Diadema Посмотреть профиль Найти все сообщения от Diadema
 
Регистрация: 03.07.2024
Сообщений: 4

Сообщение от Aetae Посмотреть сообщение
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.
я дебагером прошлась - itemdenID - это array из одного элемента

Попробовала обернуть его вот так:
const [{itemdenID: newItemden}] = itemdenID;
Пишет, что undefined.
Ответить с цитированием
  #8 (permalink)  
Старый 05.07.2024, 10:19
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,590

Ну значит так:
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...
"Пробовать" всякую абра-кадабру можно очень долго.
__________________
29375, 35
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Оптимальная передача данных Aido Node.JS 1 02.05.2020 04:13
Отправка данных формы AJAX`ом? Jopses jQuery 4 20.02.2013 12:34
проверка ввода данных формы mugoleg Общие вопросы Javascript 3 27.02.2011 14:34
ошибка NS_ERROR_DOM_SECURITY_ERR h0kum Events/DOM/Window 2 18.12.2010 20:01
Ошибка при добавлении обработчика к событию Riim Events/DOM/Window 32 19.01.2010 14:17