首页 > 解决方案 > Firebase-admin nodejs SDK 无法连接

问题描述

我正在尝试使用 nodejs SDK 连接到 firebase/firestone,但是我没有连接。我尝试使用 setInterval 多次连接,但没有任何效果。

首先,我使用凭据和 databaseURL 初始化 firebase,之后我得到 databaseRef,最后我尝试写入数据库。

我检查了./info/connectedon setInterval 的超时时间为 1000 毫秒,mocha --timeout 标志为 5000 毫秒,并且始终标记为离线。

我检查了凭据,当凭据或配置 json 错误时,它们会给出 JSON 解析错误消息(因为我有几个存储实例,每个实例都根据执行期间生成的标志连接)。

我在我的应用程序上使用 TDD 方法,因此,我必须模拟整个数据库并检查每个操作的结果值。我已经为处理 firebase/firestone 工作的任务编写了一个控制器,但是如果我无法连接它就没有用了。

代码在这里:

const analyticsFirebaseMock = admin.initializeApp({
  credentials: admin.credential.cert(analyticsCredentials),
  databaseURL: process.env.ANALYTICS_FIREBASE_URL
}, 'analyticsMock')

const analyticsDbRef = analyticsFirebaseMock.database()

beforeEach(() => {})

afterEach(() => sinon.restore())

describe('POST - /analytics', () => {
  it('should save the analytics data for new year', async (done) => {
    const itens = 1
    const price = 599.00
    
    setInterval(() => {
      clockAnalyticsDbRef.ref(`.info/connected`).once('value', (value) => {
        if (value.val() === true) console.log('connected')
        else console.error('offline')
      })
    }, 1000)

    await analytics.updateAnalytics(user, itens, price)

    await analyticsDbRef.ref(`${user}`).once('value', (value) => {
      expect(R.view(userLens, value)).to.be.equals(user)
      done()
    })
  })
})

在上面的代码中,由于js的异步特性,我在analyticsDbRef上使用了async/await。调用控制器,等待查询结果,以done结束。测试因超时而失败,期望调用 done。

我能做错什么吗?

标签: node.jsfirebase-realtime-databasefirebase-admin

解决方案


推荐阅读