Как подключить Azure к Express Node.js с помощью Async Connection в глобальном масштабе и распределить по нескольким маршрутам? - PullRequest
0 голосов
/ 06 ноября 2019

Я использую Express, Node.js с Azure SQL connection. Я видел azure node.js руководство по подключению database. Это работает, когда я добавляю этот код в базовый файл (app.js). Но я хочу вызывать его по-разному для запуска, SQL-запросов, отображать его в разных представлениях, и я хочу, чтобы конфигурация была в одном файле конфигурации (config / database.js). Но я написал все в app.js. Когда я называю это соединение другим маршрутом, оно показывает, что соединение не является таким конструктором.

const express = require('express')
const app = express()
const path = require('path');
const exphbs = require('express-handlebars');
const bodyParser = require('body-parser');
const methodOverride = require('method-override');
//const session = require('express-session');
//const flash = require('connect-flash');
var azureConnection = require('tedious').Connection;
var Request = require('tedious').Request;
var Types = require('tedious').TYPES;
const passport = require('passport');
//var Sequelize = require('sequelize');
//var uuid = require('node-uuid');
var async = require('async');
//const config = require('./config/database');

var azureConfig = {
    server: '****',
    authentication: {
        type: 'default',
        options: {
            userName: '****', 
            password: '****'
        }
    },
    options: {
        database: '*',
        useColumnNames: true // Lookup by column name instead of index
    }
  }

var azureConnection = new azureConnection(azureConfig);

// Attempt to connect and execute queries if connection goes through
azureConnection.on('connect', function(err) {
    if (err) { console.log(err); } else { console.log('Azure Sql Server Connected'); }

    function exec(sql) {
        var request = new Request(sql, function(err) {
            if (err) {
                console.log(err);
            }
        });
        _rows = [];
        request.on('row', function(columns) {
            var _item = {};
            // Converting the response row to a JSON formatted object: [property]: value
            for (var name in columns) {
                _item[name] = columns[name].value;
            }
            _rows.push(_item);
           // console.log(_item);
         //res.render('admin/customer-interview', _item);
        });

        azureConnection.execSql(request);
    }

    async.waterfall([
        function(){
            exec('SELECT * FROM ****');
        },
    ]);
});

//set view engine
app.engine('handlebars', exphbs({ defaultLayout: 'admin_log' }));
app.set('view engine', 'handlebars');

//asset file route location
app.use(express.static(path.join(__dirname, 'public')));

//set Body-parser
app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());

//helper function
//const { select } = require('./helpers/handlebars-helpers');

//Method Override
app.use(methodOverride('_method'));


// Express session
/* Routes Declaration */
const loginData = require('./routes/Login/login.js');
const dashboardData = require('./routes/Dashboard/dashboard.js');
const customersData = require('./routes/Customers/customers.js');
const customerInterviewData = require('./routes/Customer-Interview/customer-interview.js');
const purchaseHistoryData = require('./routes/Purchase-History/purchase-history.js');
const notesData = require('./routes/Masters/notes.js');
const groupMasterData = require('./routes/Masters/groupmaster.js');
const typeMasterData = require('./routes/Masters/typemaster.js');

/* Route Callback */
app.use('/login', loginData);
app.use('/', dashboardData);
app.use('/customers', customersData);
app.use('/customer-interview', customerInterviewData);
app.use('/purchase-history', purchaseHistoryData);
app.use('/notes', notesData);
app.use('/groupmaster', groupMasterData);
app.use('/typemaster', typeMasterData);

app.listen(80, '0.0.0.0', () => {
    console.log('listening on port :80');
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...