如何解决子域基础数据库连接nodejs + express
以下是我根据访问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
};
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。