我在后端使用带有打字稿的 NodeJS 中的 express 框架。我的索引文件中有一个非常简单的架构:
索引.html
import express = require("express");
import mongoClient = require("mongodb");
import apiRoutes from "./routes";
import { MONGO_CONNECTION } from "./config/mongo_config";
const app = express();
mongoClient.MongoClient.connect(MONGO_CONNECTION, { }, (err: any, mclient: any) => {
if (err) throw err;
const mongodb = mclient.db('test');
app.use('/api', isOnline, apiRoutes);
app.listen(80, () => console.log('API running on port 80'));
});
快速路由在另一个文件中分隔(在我的版本中,它被分隔在多个文件中,只是为了简单起见),这里只是一个示例:
路线/index.ts
import express = require("express");
import { Router } from "express";
const router = Router({mergeParams: true});
router.get('/example', (req: express.Request, res: express.Response) => {
res.json('Hello World');
});
export default router;
我不想使用猫鼬。那么有没有办法将数据库连接传递给另一个文件而无需再次连接?
您可以在 index.js 中导出对象
export const mongodb = {};
然后代替这个:
const mongodb = mclient.db('test');
采用:
mongodb.connection = mclient.db('test');
或类似的东西。
然后代码的其他部分可以导入它,但在使用它之前确保它不是未定义的,因为它可能尚未初始化。
另一种选择是导出一个承诺,该承诺将通过建立连接来解决:
export const mongodb = new Promise((resolve, reject) => {
// establish your connection here ...
resolve(mclient.db('test'));
// ...
);
然后在您的导入代码中,您还将与 await 一起使用它。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句