我正在研究一个api的响应时间非常重要的api(在此答案的上下文中:https://stackoverflow.com/a/60910024/4378475)我有两个数据库初始化,mongodb和firebase,我想确切地计算它需要多少时间需要连接这些数据库
这是我的代码:
const dbURI = `mongodb://xxxxxxxxxxxxxxxx`
let timeCounter = 0;
export function initMongoDb() {
timeCounter = Date.now();
if (mongoose.connection.readyState !== mongoose.STATES.connected
&& mongoose.connection.readyState !== mongoose.STATES.connecting) {
console.log("initializing mongoose");
mongoose.connect(dbURI, {
useNewUrlParser: true, useUnifiedTopology: true
}).catch(e => {
console.log("mongo connection failed for reason: ", e);
})
} else {
console.log("mongoose already connected: ", mongoose.STATES[mongoose.connection.readyState], "took: ", Date.now() - timeCounter, "ms");
}
}
mongoose.connection.on('connected', function () {//connected
console.log("mongooseListner: Mongoose is connected, took: ", Date.now() - timeCounter,"ms");
});
这给了我这样的日志:
> mongooseListner: Mongoose is connected, took: 1310 ms
或
> mongoose already connected: connected took: 0 ms
我想要相同的东西用于Firebase数据库,这是我的代码:
export function initFirebase(){
if (admin.apps.length === 0) {
console.log("initializing firebase database");
admin.initializeApp(functions.config().firebase)
}else{
console.log("firebase is already initialized");
}
}
但是firebase initializeApp方法不提供(到目前为止,我所掌握的知识和文档所能提供的)任何promise或connected事件,因此我无法计算初始化实际花费的时间
请提出我该怎么做,任何解决方法都将适用
答案 0 :(得分:0)
FirebaseApp
实例的初始化是同步的。因此,initializeApp
调用返回时,它就完成了。
timeCounter = Date.now();
initFirebase();
console.log("Initializing Firebase took: ", Date.now() - timeCounter,"ms");
但是请注意,这只是初始化了一些局部变量,而Mongoose代码似乎实际上已连接到数据库。 Firebase客户端与Firestore后端之间的连接是无连接的,因此与您对Mongoose所做的工作并不完全相同。您可能获得的最接近的记录是第一次写入或读取操作花费的时间。