Я получаю JSONObject
от клиента.
{
"registerationId": 57502,
"firstName": "Taha",
"lastName": "Kirmani",
"dob": "10-08-1988",
"cnic": 4210137718361,
"gender": "Male"
}
Вот как я это разбираюсь.
app.post('/addUser', function (req, res) {
var registrationId= req.body.registerationId;
var firstName= req.body.firstName;
var lastName= req.body.lastName;
var dob= req.body.dob;
//var randomQuery = connection.query('INSERT INTO students 'COLUMN NAME' VALUES 'VALUES NAME' //);
//
})
С приведенным выше подходом я могу поместить данные в MySQL database
, но я ищу более эффективный подход.
Я хочу, чтобы передать jsonObject
для query
, и он вставляет данные в БД, поэтому я не буду выполнять шаг req.body.id
для каждого маршрута.
Я ищу что-то вроде этого;
(insert into table (?) VALUES (?) , req.keys, req.values)
Существует несколько способов решения этой проблемы.
Используйте библиотеку ORM. Объект Relational Mapper или ORM - это библиотека, которая может помочь вам хранить и извлекать объекты из реляционной базы данных (например, MySQL). Это помогает создать правильную строку SQL для вашего прецедента (создание, чтение, обновление или удаление). Существует множество доступных ORM для Node.js. Вот несколько: Книжная полка, Sequelize, Возражение. Некоторые заметки об ORM
Храните информацию в виде JSON. Если вы действительно хотите сохранить данные JSON как есть, вы можете выбрать для записи объект JSON непосредственно в базу данных. Некоторые замечания об этом подходе:
В общем, я бы рекомендовал использовать ORM для хранения информации как JSON. По опыту, это становится очень трудно поддерживать, если это сделано, а поддержка индексирования в JSON относительно нова в MySQL. Если вы считаете, что это действительно лучше, я бы рекомендовал использовать нереляционную БД вместо MySQL.
Однако для большинства случаев использования вариант 1 - ORM - вероятно, безопасная ставка.
Вы не можете сделать это просто с помощью SQL. В синтаксисе SQL имена столбцов и количество значений в предложении VALUES
должны быть исправлены во время разбора запроса.
И, конечно, столбцы должны существовать в определении таблицы. Если ваш объект JS имеет дополнительные свойства, которые не соответствуют реальным столбцам, он не будет работать независимо.
Чтобы сделать то, что вы намереваетесь, вам понадобится некоторый класс JS, который знает о столбцах, которые существуют в таблице. Он выберет подмножество свойств в вашем объекте JS, имена которого соответствуют известным столбцам таблицы, и я предполагаю игнорировать другие свойства. Или вы хотите, чтобы это привело к ошибке, если есть незаконные свойства?
Это пример проблемы - то, что вы хотите, чтобы сделать сопоставление, не обязательно то, что кто-то еще захочет этого сделать. Или даже не то, что вы хотите, чтобы это было в другом приложении.