节点 js mssql 问题 - 调整 mysql 示例
node js mssql issue - adapting a mysql example
我正在尝试将此 mysql crud 示例改编为 mssql.
http://teknosains.com/i/simple-crud-nodejs-mysql
这里是git:
https://github.com/codetrash/nodecrud
我修改了这个函数:
exports.list = function(req, res){
req.getConnection(function(err,connection){
var query = connection.query('SELECT * FROM customer',function(err,rows)
{
if(err)
console.log("Error Selecting : %s ",err );
res.render('customers',{page_title:"Customers - Node.js",data:rows});
});
//console.log(query.sql);
});
};
为此:
exports.list = function(req, res){
// req.getConnection(function(err,connection){
sql.connect(sqlConfig, function() {
var request = new sql.Request();
request.query('SELECT * FROM customer',function(err,rows)
{
console.log(rows);
if(err)
console.log("Error Selecting : %s ",err );
res.render('customers',{page_title:"customer - Node.js",data:rows});
});
//console.log(query.sql);
});
//sql.close();
};
我在控制台上获得了查询的输出,因此与数据库的连接和查询本身没有问题,但它没有在 ejs 文件中实现。
(link 到 ejs:https://github.com/codetrash/nodecrud/blob/master/views/customers.ejs)
有什么区别?
在mssql
中,query
的回调不直接return行,它return是一个对象。 在 中 return 对象是数组 recordset
,其中包含您的行。
的示例
request.query('select 1 as number; select 2 as number', (err, result) => {
// ... error checks
console.log(result.recordset[0].number) // return 1
console.log(result.recordsets[0][0].number) // return 1
console.log(result.recordsets[1][0].number) // return 2
})
(顺便说一句,(err, result) => { }
与本例中的 function(err, result) { }
相同)
NB!recordset和recordset的区别s: 如果你的query
调用多个select
s,它们将可以通过 recordset[x]
访问。但是据我所知,recordset
始终是您 query
中第一个 select
的结果;您可以只使用 recordset
以获得更简洁的代码。
只需将您的代码更改为
request.query('SELECT * FROM customer',function(err,result)
{
console.log(result);
if(err)
console.log("Error Selecting : %s ",err );
res.render('customers',{page_title:"customer - Node.js",data:result.recordset});
});
我正在尝试将此 mysql crud 示例改编为 mssql.
http://teknosains.com/i/simple-crud-nodejs-mysql
这里是git:
https://github.com/codetrash/nodecrud
我修改了这个函数:
exports.list = function(req, res){
req.getConnection(function(err,connection){
var query = connection.query('SELECT * FROM customer',function(err,rows)
{
if(err)
console.log("Error Selecting : %s ",err );
res.render('customers',{page_title:"Customers - Node.js",data:rows});
});
//console.log(query.sql);
});
};
为此:
exports.list = function(req, res){
// req.getConnection(function(err,connection){
sql.connect(sqlConfig, function() {
var request = new sql.Request();
request.query('SELECT * FROM customer',function(err,rows)
{
console.log(rows);
if(err)
console.log("Error Selecting : %s ",err );
res.render('customers',{page_title:"customer - Node.js",data:rows});
});
//console.log(query.sql);
});
//sql.close();
};
我在控制台上获得了查询的输出,因此与数据库的连接和查询本身没有问题,但它没有在 ejs 文件中实现。 (link 到 ejs:https://github.com/codetrash/nodecrud/blob/master/views/customers.ejs)
有什么区别?
在mssql
中,query
的回调不直接return行,它return是一个对象。 在 中 return 对象是数组 recordset
,其中包含您的行。
request.query('select 1 as number; select 2 as number', (err, result) => {
// ... error checks
console.log(result.recordset[0].number) // return 1
console.log(result.recordsets[0][0].number) // return 1
console.log(result.recordsets[1][0].number) // return 2
})
(顺便说一句,(err, result) => { }
与本例中的 function(err, result) { }
相同)
NB!recordset和recordset的区别s: 如果你的query
调用多个select
s,它们将可以通过 recordset[x]
访问。但是据我所知,recordset
始终是您 query
中第一个 select
的结果;您可以只使用 recordset
以获得更简洁的代码。
只需将您的代码更改为
request.query('SELECT * FROM customer',function(err,result)
{
console.log(result);
if(err)
console.log("Error Selecting : %s ",err );
res.render('customers',{page_title:"customer - Node.js",data:result.recordset});
});