从Nodejs连接到SQL Server

我正在使用Node js和SQL Server 2008开发示例应用程序。

要从节点j访问SQL服务器,使用seriate [ http://developer.leankit.com/painless-sql-server-with-nodejs-and-seriate/] 。

以下是我的示例代码

文件./DBLayer/db.js代码

var sql = require("seriate"); var config = { "server": "127.0.0.1", "user": "sa", "password": "12kafour~9999", "database": "Tickets" }; sql.setDefaultConfig( config ); exports.sqlDb = sql; 

和文件app.js代码

 var express = require('express'); var app = express(); var path = require('path'); var bodyParser = require('body-parser'); var sqlDb = require('./DBLayer/db.js'); //-- set the view engine app.set('view engine' , 'ejs'); app.use( bodyParser.json() ); // to support JSON-encoded bodies app.use(bodyParser.urlencoded({ // to support URL-encoded bodies ?? extended: true })); //-- set the routes app.get('/login' , function(req , res){ //-- set the view to render res.render('login' , {title:'Login Screen' , error : ''}); }); app.post('/login' , function(req , res) { sqlDb.execute( { query: "SELECT count(*) FROM USERS WHERE LOGIN ='" + req.body.username + "'" + "AND PASSWORD = '" + req.body.pwd + "'" } ).then( function( results ) { res.render('login' , {title:'Login Screen' , error : 'ur the one...'}); }, function( err ) { res.render('login' , {title:'Login Screen' , error : 'Invalid Login/Password.'}); }); }); //-- set the port var server = app.listen(3000 , function() { console.log('Server Ready..') }); 

当用户input用户名和密码,并提交得到“TypeError:sqlDb.execute不是一个函数”错误。

我不知道为什么我得到这个错误。

你应该改变这一行:

 var sqlDb = require('./DBLayer/db.js'); 

 var sqlDb = require('./DBLayer/db.js').sqlDb; 

或者改变这一行:

 exports.sqlDb = sql; 

 exports = sql; 

说明:在Node中,当你这样做时: var sqlDb = require('./DBLayer/db.js'); 它使sqlDb成为exports对象。

所以在你的代码中你有exports.sqlDb = sql 。 编译器是正确的出口没有执行function。 导出只有1个var, exports.sqlDb


奖励提示:如果你真的想要你的代码工作,没有改变app.js你可以添加到您的模块的末尾:

 exports.execute=function(){ return sql.execute.call(sql,arguments) }