Javascript 如何在express.js应用程序启动之前加载异步数据库url并启动数据库连接?
我已将express.js应用程序配置为在AWS lambda上运行。数据库URL在AmazonKMS服务中存储并加密,因此如果我想使用该URL,则必须使用AWS KMS服务解密密钥Javascript 如何在express.js应用程序启动之前加载异步数据库url并启动数据库连接?,javascript,node.js,mongodb,express,mongoose,Javascript,Node.js,Mongodb,Express,Mongoose,我已将express.js应用程序配置为在AWS lambda上运行。数据库URL在AmazonKMS服务中存储并加密,因此如果我想使用该URL,则必须使用AWS KMS服务解密密钥 // imports import mongoose from 'mongoose'; import serverless from 'serverless-http'; // KMS promise const getKmsKey = (key) => { // implementation r
// imports
import mongoose from 'mongoose';
import serverless from 'serverless-http';
// KMS promise
const getKmsKey = (key) => {
// implementation
return new Promoise((resolve, reject) => { /* KMS logic */ });
};
// initiate database connection
(async function(){
mongoose.connect(await getKmsKey('MONGOURL'));
mongoose.Promise = global.Promise;
})();
const app = express();
// EDIT: added missing app.get example
app.get('/status', async (req, res, next) => {
// I would like to make sure that mongoose is always initiated here
res.sendStatus(200);
});
module.exports.handler = serverless(app.default);
确保在任何快速路线之前建立数据库连接的最佳策略是什么?我看到存在sync library(),但我认为仅仅用于设置数据库连接的开销太大,我不想在其他任何地方使用它
编辑:
app.get('/status',async(req,res,next)=>{
在原始帖子中丢失了。Justwait-mongoose.connect(wait-getKmsKey('MONGOURL');
Justwait-mongoose.connect(wait-getKmsKey('MONGOURL'));
您也可以使用promise
mongoose.connect(uri, options).then(
() => {
/** ready to use. The `mongoose.connect()` promise resolves to undefined. */
},
err => {
/** handle initial connection error */
}
);
请参阅以获取参考,您也可以使用promise
mongoose.connect(uri, options).then(
() => {
/** ready to use. The `mongoose.connect()` promise resolves to undefined. */
},
err => {
/** handle initial connection error */
}
);
请参阅参考我在搜索相同的内容,并找到了这篇伟大的文章,解释了如何做到这一点 您可以将所有路线放在单独的模块中,并:
app.on('ready', function() {
app.use('/', require('./routes'));
app.listen(3000, function(){
console.log("app is ready");
});
});
我也在寻找同样的东西,发现了这篇很好的文章,解释了你是如何做到的 您可以将所有路线放在单独的模块中,并:
app.on('ready', function() {
app.use('/', require('./routes'));
app.listen(3000, function(){
console.log("app is ready");
});
});