我试图连接到连接到我的SQL服务器数据库与节点和hapi.js

我正在尝试使用node和hapi.js来testing连接到我的sql服务器,并在我的一个表上运行一个简单的查询。 我对node和Hapi相当陌生,所以我只是想弄明白这一点

所以首先我的文件夹结构如下我有一个名为api的文件夹,其中有路线,这就是我在做我的路线get_aosdata.js这个作品我testing它只是传回'你好世界'然后我有一个查询文件夹下api这是我在connection.js中设置我的数据库连接

这是我的路线目前的样子

'use strict'; const query = require('../query/connection'); module.exports = { method: 'GET', path: '/api/query/{id}', config: { pre: [ { method: query.getSqlConnection, assign: 'db' } ], handler: (request, reply) => { const request = new db.Request(); request.query(`SELECT a.OrdNbr, a.sotypeid, a.user6, a.lupd_datetime, a.user3, a.crtd_user, a.S4Future01, a.slsperid, a.totmerch, a.CustOrdNbr from SOHeader a join customer b on a.CustID = b.CustId join SOLine c on a.OrdNbr = c.OrdNbr where sotypeId = 'Q'`, ((err, recordset) => { if (err) { console.log(err); } reply(recordset); })); } } } 

我打电话给一个prereq来做我的连接这是这个代码的样子

 const sql = require('mssql'); const dbConfig = { server: 'myserver', database: 'mydatabase', user: 'myuser', password: 'mypassword' } const getSqlConnection = (request, reply) => { sql.connect(dbConfig, ((err) => { if (err) { console.log(err); } })); return reply(); } module.exports = getSqlConnection; 

这是我的服务器

 'use strict'; const Hapi = require('hapi'); const server = new Hapi.Server(); server.connection({ port: 3001, host: 'localhost' }); server.route(require('./api/routes/get_AOSdata')); server.start((err) => { if(err) { throw err; } console.log(`Server running at: ${server.info.uri}`); }); 

现在我的错误说预先在位置0不符合任何允许的types…我对这个错误无能为力,我无法find任何地方的修复。 我正在使用hapi和mssql来打电话任何帮助,将不胜感激我在节点和hapi新,但是我已经读了很多hapi,并真的想要使用它

这是我如何做,所以我希望它有帮助

 'use strict'; const sql = require('mssql'); const async = require('asyncawait/async'); const await = require('asyncawait/await'); const boom = require('boom'); const dbConfig = { server: 'myserver', database: 'mydb', user: 'myuser', password: 'mypass' } const conn = new sql.ConnectionPool(dbConfig); module.exports = { method: 'GET', path: '/api/query/{id}', config: { handler: (request, reply) => { conn.connect().then(() => { req.query(``SELECT a.OrdNbr, a.sotypeid, a.user6, a.lupd_datetime, a.user3, a.crtd_user, a.S4Future01, a.slsperid, a.totmerch, a.CustOrdNbr from SOHeader a join customer b on a.CustID = b.CustId join SOLine c on a.OrdNbr = c.OrdNbr where sotypeId = 'Q'`).then((data) => { reply(data); conn.close(); }) .catch((err) => { reply(boom.badRequest(err.message, err)); conn.close(); }); }) .catch((err) => { reply(boom.badRequest(err.message, err)); }); } } } 

在你的情况下,这将是你的路线,我认为

那么你的服务器会看起来几乎像这样

 'use strict'; const Hapi = require('hapi'); const boom = require('boom'); const server = new Hapi.Server(); server.connection({ port: 3001, host: 'localhost', routes: {cors: true} }); server.route(require('./api/routes/get_AOSdata')); server.start((err) => { if(err) { boom.badRequest(err.message, err); } console.log(`Server running at: ${server.info.uri}`); }); 

这可能是完全错误的方式,但这是我得到我的工作