微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

子域基础数据库连接nodejs + express

如何解决子域基础数据库连接nodejs + express

我只有一个项目存储库,并且有多个数据库用于不同的客户端。

以下是我根据访问URL用于连接数据库数据库命名和URL的连接类型:

客户的数据库

  • shreyas _db(http:// shreyas .locahost:3001)
  • ajay _db(http:// ajay .locahost:3001)
  • vijay _db(http:// vijay .locahost:3001)

请指导如何使用Express在NodeJ中实现此结构。

谢谢

解决方法

这是我想出的解决方案:

  1. 添加路由器

    app.use('/ api',等待APIRouter())

  2. 连接到路由器中间件中的其他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 举报,一经查实,本站将立刻删除。