javascript - 我正在尝试使用 Node 和 hapi.js 连接到我的 SQL Server 数据库

标签 javascript sql-server node.js hapi.js

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

所以首先我的文件夹结构如下,我有一个名为 api 的文件夹,其中包含路由,这就是我正在执行路由 get_aosdata.js 的地方,这个工作正常,我测试了它,只是传回“hello world”,然后我有一个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);
                              }));

        }
    }
}

我正在调用先决条件来进行连接,这就是这段代码的样子

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 处的 pre 与任何允许的类型不匹配...我对此错误一无所知,并且在任何地方都找不到修复方法。我正在使用 hapi 和 mssql 进行调用,如有任何帮助,我将不胜感激,我是 Node 和 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));
          });
        }
    }
}

在你的情况下,我认为这将在你的 route

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

'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}`);
});

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

关于javascript - 我正在尝试使用 Node 和 hapi.js 连接到我的 SQL Server 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45680822/

相关文章:

javascript - 从 Node.JS (JavaScript) 中删除 AWS/S3 对象

javascript - 在 Javascript 或 Jquery 中模拟按键事件

javascript - 为什么我的 JQuery Flot 不工作?

javascript - "this"关键字如何与 JavaScript 中的对象一起使用?

sql-server - 优势数据库或 SQL Server

sql - 帮助 PIVOT

node.js - 是否可以在多个项目之间共享相同的 Node 模块?

javascript - swfobject 不适用于 Chrome 中的 https

mysql - SQl 选择出现在一组或多组中的数据

node.js - 找不到模块