Обновление нескольких строк с помощью node-mysql, NodeJS и Q
Я использую обещания node-mysql, node-js и Q.
Я успешно обновил, удалил и вставил отдельные строки, используя выше. А также вставил несколько строк в одной инструкции в моем сценарии тестирования.
Однако мне нужно обновить несколько строк с разными значениями (пакетный режим) либо в одном запросе, либо в цикле for.
Информация о том, как использовать подготовленные операторы в mysql2 (предполагается улучшить для node-mysql), очень скудна, и примеров здесь нет, хотя это должно быть естественным выбором вместе с обещаниями компенсировать асинхронный характер node-js.
Кроме того, я успешно использовал defred.makeNodeResolver () в различных тестовых сценариях.
Я пытаюсь обновить несколько строк в одном запросе с предложением where и изменением условий.
Это работает, когда я обновляю одну строку. Однако, когда я пытаюсь обновить несколько строк одним запросом, записи не обновляются.
Я готов переключиться на использование цикла for для выполнения нескольких обновлений, а затем агрегировать результат и отправлять его обратно с сервера на клиент, что было бы моим вторым предпочтительным выбором. И я не понимаю, почему это не следует делать таким образом, если производительность не сильно снижается. Но я не нашел никаких примеров, чтобы сделать это таким образом.
var values = [
{ users: "tom", id: 101 },
{ users: "george", id: 102 }
];
// var params = [values.users, values.id ];
var sql = 'UPDATE tabletest SET users = ? WHERE id = ?;';
connection.query(sql, [{users: values[0].users}, {id: values[0].id }], defered.makeNodeResolver());
Код, приведенный выше, на самом деле не обновляет несколько строк. Я предполагаю, что в моем синтаксисе есть ошибка.
Но в любом случае, каков наилучший подход к этому в данном конкретном сценарии? Подготовленные операторы, повторные запросы в цикле for или хранимые процедуры?