node.js - Firebase-admin nodejs SDK 无法连接
问题描述
我正在尝试使用 nodejs SDK 连接到 firebase/firestone,但是我没有连接。我尝试使用 setInterval 多次连接,但没有任何效果。
首先,我使用凭据和 databaseURL 初始化 firebase,之后我得到 databaseRef,最后我尝试写入数据库。
我检查了./info/connected
on 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。
我能做错什么吗?