更好的连接方式?



目前,我的应用程序中到处都是这些代码行。

每当调用GETINSERT时,这些行位于函数的开头。所以我觉得他们被当作是DB的重新尝试者。这些可以放在dbService类,这样我就不必连接到?

和参考:' '看起来像这样,这都来自

有什么合适的方法吗?我是否必须创建一个重试函数,以防我的DB下降?

满足单例模式:

// Wrapper around client to trigger reconnects
class PerpetualClient {

private client: Client = null
private async function createClient(): Client {
// However you create client
}

public getClient(){
return self.client;
}
public static async getPerpetualClient() : PerpetualClient{
let perpetualClient = new PerpetualClient(); 
const client = await PerpetualClient.createClient();
perpertualClient.client = client;
const reconnect = async ()=>{
const client = await PerpetualClient.createClient();
perpertualClient.client = client;
client.on('end',reconnect)
}
client.on('end',reconnect)
return perpertualClient;
}
}
// Class to enforce the single instantiation 
class DBSingleton {
private reader: PerpetualClient = null
private writer: PerpetualClient = null 
private static singleInstance: DBSingleton

private async startDB(){
DBSingleton.singleInstance = DBSingleton()
db.reader = await PerpetualClient.getPerpetualClient();
db.writer = await PerpetualClient.getPerpetualClient();
}
public async getDB(){
if(!DBSingleton.singleInstance){
await DBSingleton.startDB()
}
return DBSingleton.singleInstance;
}
}

最新更新