问题描述
以下是我根据访问URL用于连接数据库的数据库命名和URL的连接类型:
客户的数据库
- shreyas _db(http:// shreyas .locahost:3001)
- ajay _db(http:// ajay .locahost:3001)
- vijay _db(http:// vijay .locahost:3001)
请指导如何使用Express在NodeJ中实现此结构。
谢谢
解决方法
这是我想出的解决方案:
-
添加路由器
app.use('/ api',等待APIRouter())
-
连接到路由器中间件中的其他DBS。 获取子域(如果使用的是Nginx,则可能会发现req.subdomains或req.host未返回您期望的值,请尝试使用req.headers.referer),使用res.locals保存数据库,这样您就可以获得从每个API调用中获取。
export const APIRouter = async () => {
const router = express.Router()
const client = await connectDatabase()
router.use(async (req,res,next) => {
//const host = req.headers.referer?.replace("https://","");
//const subdomain = host ? host.substring(0,host.indexOf('.')) : 'main'
const subdomain = req.subdomains.length ? req.subdomains.length[0] : 'main'
const db = client.db(subdomain)
res.locals.db = {
clients: db.collection<Client>('clients'),}
next()
}
)
return router
};