目前我们在服务器端使用NodeJS作为SaaS应用程序。使用REST API,客户端(Web + Android + iOS)连接到NodeJS应用程序。
Nodejs应用程序有一个路由器文件(充当配置文件),它声明全局变量以连接DB,Redis和AWS,如下所示。
现在我们的一个客户希望他们的数据库处于私有状态,这意味着不与其他客户端数据共享。换句话说,这个房客不想和其他房客住在一起。只需将此客户端视为租户“L”,如下所示。虽然NodeJS应用程序保持不变,但客户端“L”的数据将存储在不同的服务器中。
来自Stackoverflow社区的我需要帮助,了解如何根据客户端请求实现/设置不同的全局变量。我如何配置&根据客户端请求加载全局变量。或者其他可能的方法是什么?
答案 0 :(得分:0)
或者我建议的一个简单的解决方案是创建全局配置对象,如:
config = {
shared: {
mysqlPool : sharedMySqlPoolObj,
redisPool: sharedRedispoolObj
},
tenantT: {
mysqlPool : tMySqlpoolObj,
redispool: tRedispoolObj
}
}
无论你在做db或redis连接的哪个地方 只需用以下代码替换您的代码:
例如,如果您正在进行我的SQL连接
let clientType = getClientType() // shared or tenantT
globalConfig[clientType].mysqlPool.connect(.....);
可能有助于帮助您避免进行重大更改