我正在尝试将从客户端收到的结果数据存储到sql数据库中,但是我收到了这些错误
- TypeError:request.query(...)。则不是函数
- TypeError:回调不是函数
醇>
我是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);
});
});
答案 0 :(得分:0)
request.query("INSERT INTO RMS (GradeA, GradeB, GradeC) values VALUES ? ", [values])
应该是给出错误的行。它假设第二个参数应该是函数。当传递第二个参数时,它不会返回一个promise,因此没有then
方法。
mssql
模块似乎不支持以您尝试的方式进行转义。它支持可用于将数据注入查询的输入方法。来自docs:
request
.input('input_parameter', sql.Int, value)
.query('select * from mytable where id = @input_parameter'