【问题标题】:multiple queries using mssql in node.js在 node.js 中使用 mssql 进行多个查询
【发布时间】:2018-05-07 18:00:03
【问题描述】:

我有数据被插入到我的数据库中。它工作得很好,但我知道有更好的方法来做到这一点..我应该如何将所有这些查询压缩成一个?

数据

data = [{位置:'A',移位:'1'},{位置:'B',移位:'2'},{位置:'C',移位:'3'}]

node.js

  //Receive from Angular Server 
 const express = require('express');
 const bodyParser = require('body-parser');
 const app = express();
 var sql = require('mssql');

 app.use(bodyParser.json());
 app.use(bodyParser.urlencoded({ extended: true }));

 app.all("/*", function (req, res, next) {
   res.header('Access-Control-Allow-Origin', '*');
   res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE,OPTIONS');
   res.header('Access-Control-Allow-Headers', 'Content-Type, Authorization, Content-Length, X-Requested-With');
   next();
 });

 app.listen(1433, function () { console.log('Example app listening on port 1433!') })

 var config = {
  server: "T21DOPD1",
  database: "ARGYLE_COMPARE",
  user: "dop_adm",
  password: "dopadm",
  port: 1433
};

 app.post('/ping', function (req, res) {
   res.send(res.body);
   var jsondata = JSON.stringify(req.body);
   var data = JSON.parse(jsondata);
   // data = [{Location: 'A', shift: '1'}, {Location: 'B', Shift: '2'}, {Location: 'C', Shift: '3'}] 


   sql.connect(config, function(err) { 
     if(err)
       console.log(err);
     else
       console.log("Connection successful");

     var request = new sql.Request();

     request
     .query('INSERT INTO testDB set ?', data, (err,results)=>{
      console.log(err, results);
  }) 
   })
 });

错误

错误:返回回调(错误,记录集,_this.rowsAffected); TypeError:回调不是函数

【问题讨论】:

    标签: javascript sql-server node.js bulkinsert


    【解决方案1】:

    只需通过官方 mysqljs 文档https://github.com/mysqljs/mysql 并找出这一行

    嵌套数组被转换为分组列表(用于批量插入),例如 [['a', 'b'], ['c', 'd']] 变成 ('a', 'b'), ('c', 'd')

    query('INSERT INTO testDB set ?', [[ 'A', '1'], [ 'B', '2'],[ 'C', '3']], (err,results)=>{
        console.log(err, results);
    }) 
    

    【讨论】:

    • 是的,但是我的数据结构是 [{},...{}] 这样的东西。我应该只解析它们以使其成为嵌套数组吗?
    • 我不确定,但如果对象的所有键与列名完全匹配,它就会起作用
    • 我根据那篇帖子更新了代码,但我收到了回调错误
    • 抱歉,缺少“)”。我更新了代码。再次检查它也用嵌套数组测试
    • 我确实使用嵌套数组进行了测试,并包含)。我仍然收到回调错误。我认为这个错误是别的什么?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多