将数据从node.js存储到sql数据库

我试图将从客户端收到的结果数据存储到SQL数据库,但是我得到这些错误

  1. TypeError:request.query(…)。然后不是一个函数
  2. TypeError:callback不是一个函数

我对node.js和sql数据库相当陌生。 我花了相当多的时间来弄清这些,但不知道从哪里开始,我试图删除。然后,它工作正常,但仍然抛出第二个错误。 任何人都可以请这个问题的意见?

的node.js

//Receive from Angular Server const express = require('express'); const bodyParser = require('body-parser'); const app = express(); 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 sql = require('mssql'); var config = { server: "", database: "", user: "", password: "", port: }; app.post('/ping', function (req, res) { res.send(res.body); var jsondata = JSON.stringify(req.body); var test = JSON.parse(jsondata); var values = []; values.push(test.GradeA, test.GradeB, test.GradeC) console.log(values); //values = [ '25', '36', '32' ] var dbConn = new sql.Connection(config); dbConn.connect().then(function () { var transaction = new sql.Transaction(dbConn); transaction.begin().then(function () { var request = new sql.Request(transaction); request.query("INSERT INTO RMS (GradeA, GradeB, GradeC) values VALUES ? ", [values]) .then(function () { transaction.commit().then(function (recordSet) { console.log('Rows Affected :' + request.rowsAffected); dbConn.close(); }).catch(function (err) { console.log("Error in Transaction Commit" + err); dbConn.close(); }); }).catch(function (err) { console.log("Error in Transaction Begin" + err); dbConn.close(); }); }).catch(function (err) { console.log(err); dbConn.close(); }); }).catch(function (err) { console.log(err); }); }); 

request.query("INSERT INTO RMS (GradeA, GradeB, GradeC) values VALUES ? ", [values])应该是提供错误的行。 它假定第二个参数应该是function。 而当第二个parameter passing它不返回一个承诺,因此没有方法。

mssql模块似乎不支持你尝试这样做的方式逃脱。 它支持可以用来将数据注入查询的input法。 从文档:

 request .input('input_parameter', sql.Int, value) .query('select * from mytable where id = @input_parameter'