如何在Node.JS中为MSSQL创build预准备语句?

我需要在Javascript中插入一个string到MSSQL表中。

这是我迄今为止:

使用Javascript:

var message = "It's a great day today!"; $.post('www.server.com/message='+message, function(response){ console.log(response); }); 

Node.js服务器:

 //..... a bunch of code has been used to accept the HTTP request and get the message... // for the purpose of this example, the message is asigned to 'NodeMsg' var mssqldb = require("../core/mssql"); var NodeMsg = theMessageReceivedFromHTTPRequest; function saveMessage(message) { mssqldb.executeMssql("insert into messages (message, status) VALUES('"+message+"', 'new')", function (err) { if (err) { httpMsgs.show500(req, resp, err); }//end if else { httpMsgs.sendJson(req, resp, 'success'); }//end else }); }; 

mssql.js(node.js文件):

 var mssqldb = require("mssql"); var settings = require("../settings"); exports.executeMssql = function(sql, callback) { var conn = new mssqldb.Connection(settings.mssqlConfig); conn.connect() .then(function(){ var req = new mssqldb.Request(conn); req.query(sql) .then(function (recordset) { callback(recordset); }) .catch(function(err){ console.log(err); callback(null, err); }); }) .catch(function(err){ console.log(err); callback(null, err); }); };//end executeMssql 

发生了什么总结:

  1. 我正在将一条消息定义为string。 (注意它包含一个单引号)
  2. 我将该string发送到Node.js服务器
  3. 我正在使用Node.js将string发送到mssql

问题:在了解了面向对象程序的更多内容之后,我意识到我正在执行插入操作的方式受到高度的影响,因为它对SQL注入是开放的。 此外,由于string中的单引号,代码将在执行SQL查询期间中断。

解决scheme:根据我发现的大多数资源,解决scheme是使用“准备好的语句”。

我的问题:

我怎样才能把我已经做的事情转化为利用准备好的陈述呢? 我已经searchnetworkingHOURS,我找不到一个很好的例子,如何做一个与Node.JS MSSQL(而不是MySQL),这是一个初学者可以理解Node.JS准备语句

如果您正在使用Tedious跨平台MSSQL驱动程序实现,则文档位于以下位置: http ://tediousjs.github.io/tedious/parameters.html

基本上,您需要为需要注入的值准备一个带有“@xxx”占位符的SQL语句,然后将这些参数的实际值绑定到请求中,然后执行请求。