Firebase管理数据库始终返回null作为spnapshot值

时间:2019-07-04 09:21:24

标签: node.js firebase-admin

csv之后,我总是为null得到snapshot.val();。为什么会这样?

我正在使用node sdk访问firebase数据库上的users集合。我确定该集合确实存在:

instructions

请求用户:

import { NextFunction, Request, Response } from 'express';

import * as admin from 'firebase-admin';

export const getUsers = (request: Request, response: Response, next: NextFunction) => {

admin.database.enableLogging(true);
const db = admin.database();
const ref = db.ref("users");

ref.once("value", function (snapshot) {
    const users = snapshot.val();
    console.log('users', users); // always null
    response.json({
      success: true,
      result: users
    });
  });
}

设置admin

admin.initializeApp({
  credential: admin.credential.cert(serviceAccount),
  databaseURL: config.databaseURL
});

节点版本:

v12.4.0

这是来自节点的日志:

users collection

1 个答案:

答案 0 :(得分:0)

似乎我错过了与Firebase Realtime Databases相关的主要部分。它们有两种类型:Realtime DatabaseCloud Firestore(下一代实时数据库)。在使用第二个时,我需要使用firebase-admin的适当名称空间,该名称空间应为firestore(而不是database,它是用于实时数据库的第一个名称空间): / p>

const db = admin.firestore();

const userRef = db.collection('users');
userRef.get()
  .then(snapshot => {
    const users: any = [];
    snapshot.forEach(doc => {
      users.push(doc.data());
    });

    response.json({
      success: true,
      users: users
    });
  })
  .catch(err => {
    console.log('err', err);
  });