Я использую 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.