У меня есть приложение, которое использует флажки для обновления нескольких записей в данный момент времени. Я могу обновить БД с помощью одного установленного флажка. Однако возникают проблемы при обновлении, если установлены несколько флажков.
Мне удалось удалить запятые, используя регулярное выражение: ids.trim().replace(/,{1,}$/, '');
. По сути, это была ошибка.
router.js
const express = require('express')
const router = express.Router()
var { conn } = require('./config')
router.post('/update', async (req, res) => {
try{
const pool = await conn
var ids = req.body.ids; // 1,
ids = ids.trim().replace(/,{1,}$/, '');
console.log(ids); // 1
var dev_est = req.body.dev_est; // 20,
dev_est = dev_est.trim().replace(/,{1,}$/, '');
console.log(dev_est); // 20
const update = await pool.request()
.input('ids', ids)
.input('dev_est', dev_est)
.query("UPDATE Table SET Dev_Est = @dev_est
WHERE Unique_ID = @ids");
}catch(err) {
res.status(500)
res.send(err.message)
}
selected.ejs
$(document).ready(function(){
window.ids = "";
window.dev_est = "";
$('#btnSubmit').bind('click', function(e){
e.preventDefault();
createUpdatedArrays(); // This function gets the ids and the dev_est
$.ajax({
type: "POST",
url: /update,
data: {
ids: window.ids,
dev_est: window.dev_est
}
success: function(data) {
if (data.success) {
$('.msg').html('Updated');
}
else {
alert("error");
}
}
});
ids = "";
dev_est = "";
Фактический результат с одним установленным флажком
ID | 1
Dev_Est | 10
Фактический результат с несколькими отмеченными флажками
ID | 1,2,3,4
Dev_Est | 10,5,9,17
Ошибка
Как мы все можем догадаться, Conversion failed when converting the nvarchar value '1,2,3,4' to data type int.
Мой вопрос: как я могу обновить несколько записей за одну отправку? Любая помощь будет оценена. Спасибо!