使用NodeJ将多个复选框值更新到SQL Server

时间:2019-06-12 19:59:33

标签: javascript node.js express

我有一个使用复选框的应用程序,以便在给定时间更新多个记录。我可以通过选中一个复选框来更新数据库。但是,在选中多个复选框时更新时遇到问题。

我能够使用正则表达式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.

我的问题是,如何在一次提交时更新多个记录。任何帮助,将不胜感激。谢谢!

0 个答案:

没有答案