目前,我的应用程序中到处都是这些代码行。
每当调用GET
或INSERT
时,这些行位于函数的开头。所以我觉得他们被当作是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;
}
}