Динамическое построение инструкции sql с ошибкой узла

#mysql #sql #node.js #database

#mysql #sql #node.js #База данных

Вопрос:

Я пытаюсь динамически создать оператор mysql, но я продолжаю получать неправильный синтаксис.

 const tableName = user_data;
const insertSet = {'id': 1, 'dependents': ['sarah', 'john']}
conn.query('insert into ?? set ?', [tableName, insertSet], (err,rows) => {
  if (err) reject(err);
  resolve(rows);
}
 

Когда я пытаюсь это сделать, я получаю следующую ошибку:

У вас ошибка в синтаксисе SQL

В сообщении об ошибке я увидел, что sql, который он пытался запустить, является

 insert into user_data set id = 1, dependents='sarah','john';
 

Он забрал массив из dependents , и это вызвало синтаксическую ошибку.

Это должно быть

 insert into user_data set id = 1, dependents=[ 'sarah','john' ];
 

Комментарии:

1. MySQL не имеет массивов, просто не может установить dependents массив таких строк.

2. Что такое тип dependents данных?

3. Типичный запрос insert использует values вместо set . Используете ли вы какой-то ORM, который переписывает запросы в SQL, или это изначально должно быть SQL?

4. Неважно, я всегда забываю, что MySQL допускает и такую вариацию.

5. Массив, на котором я тестирую, на самом деле является логическим. что-то вроде [true, false]. для примера я просто упростил его до string