【问题标题】:how to detect when firebase admin initialization complete如何检测firebase管理员初始化何时完成
【发布时间】:2020-07-24 23:44:14
【问题描述】:

我正在开发一个 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 方法没有提供(据我所知和到目前为止我所经历的文档)任何承诺或连接事件,所以我无法计算初始化实际需要多少时间

请建议我该怎么做,任何解决方法都会被应用

【问题讨论】:

    标签: node.js firebase google-cloud-firestore google-cloud-functions firebase-admin


    【解决方案1】:

    FirebaseApp 实例的初始化是同步的。所以当initializeApp 调用返回时,它就完成了。

    timeCounter = Date.now();
    initFirebase();
    console.log("Initializing Firebase took: ", Date.now() - timeCounter,"ms");
    

    但是请注意,这只是初始化了一些局部变量,而 Mongoose 代码似乎实际上连接到了数据库。 Firebase 客户端和 Firestore 后端之间的连接是无连接的,因此没有真正等同于您为 Mongoose 所做的事情。最接近的可能是记录第一次写入或读取操作所花费的时间。

    【讨论】:

      猜你喜欢
      • 2016-01-06
      • 2010-12-09
      • 1970-01-01
      • 2019-02-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-16
      相关资源
      最近更新 更多