Соединение с базой данных (knex) устанавливается до начала прослушивания моего порта в node js? - PullRequest
0 голосов
/ 30 января 2020

Я использую GCP postgresSQL в качестве базы данных и использую REST API для доступа к данным из этой базы данных, используя node.js. Когда я запускаю это локально или в среде разработки на платформе GCP, соединение с базой данных (knex. js) запускается до того, как мой порт начнет прослушивать (приложение. js). В идеале это не должно быть потоком. Здесь я совершенно запутался, почему так работает. Я попытался импортировать мой модуль knex. js в приложение. js и попытался вызвать его после прослушивания начала порта, но он не работает должным образом. Может ли кто-нибудь высказать свое мнение по моей проблеме.

Мое приложение. js

const createError = require('http-errors');
const express = require('express');
const path = require('path');
const cookieParser = require('cookie-parser');
const logger = require('morgan');
const app = express();
const customerapi=require('./api/customer');

app.use(logger('dev'));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static("public"));

//service test
app.get('/',(req,res)=>{
  res.json({
    message: 'service is up and running'
  });
})

app.use('/cust',customerapi);

// catch 404 and forward to error handler
app.use('*',function(req, res, next) {
  next(createError(404));
});

// error handler
app.use(function(err, req, res, next) {
  res.status(err.status || 500);
  res.json({
    errorCode:err.errorCode || 'err-msg-0001',
    errorMessage:err.message
  });
});

// call back function is called when request timed out.
app.use('*',function(req, res, next){
  res.setTimeout(60000 , function(){

  });
  next();
});

const PORT = process.env.PORT || 5002;



setup()
  .then(() => {
    app.listen(PORT, () => {      
      console.log(`App listening on port ${PORT}`);
      console.log("Press Ctrl+C to quit.");
    });
  })
  .catch(err => {
    console.error("Setup failed: ", err.stack);
    console.error(err);
  });

  function setup() {
    return new Promise((resolve, reject) => {
      const configLoader = require("./envLoader");
      configLoader
        .SetEncryptedEnvVariables()
        .then(() => {
          resolve();
        })
        .catch(err => {
          reject(err);
        });
    });
  }

module.exports = app;

My knex. js

const environment =process.env.NODE_ENV ||'local';
console.log(environment)
const config=require('../knexfile');
const environmentConfig=config[environment];
console.log(environmentConfig)
const knex=require('knex');
const connection=knex(environmentConfig);
module.exports=connection;

Мой клиент. js

const express = require('express');
const router = express.Router();
const queries=require('../db/queries');

router.get('/',(req,res)=>{
    accessing queries .........................
}

Внутри /db/queries.js Я использую файл knex. js для установления sh подключения к БД.

Я использую функцию setup () для выполнить шифрование и дешифрование с помощью GCP KMS.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...