继csv
之后,我总是为null
得到snapshot.val();
。为什么会这样?
我正在使用node sdk
访问firebase数据库上的users
集合。我确定该集合确实存在:
请求用户:
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
这是来自节点的日志:
答案 0 :(得分:0)
似乎我错过了与Firebase Realtime Databases
相关的主要部分。它们有两种类型:Realtime Database
和Cloud 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);
});