Node.js Firebase管理数据库始终将null作为spnapshot值返回
接下来,对于Node.js Firebase管理数据库始终将null作为spnapshot值返回,node.js,firebase-admin,Node.js,Firebase Admin,接下来,对于snapshot.val(),我总是得到null。为什么呢 我正在使用node sdk访问firebase数据库上的users集合。我确信该系列确实存在: 请求用户: import { NextFunction, Request, Response } from 'express'; import * as admin from 'firebase-admin'; export const getUsers = (request: Request, response: Resp
snapshot.val(),我总是得到null
代码>。为什么呢
我正在使用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.initializeApp({
credential: admin.credential.cert(serviceAccount),
databaseURL: config.databaseURL
});
节点版本:
v12.4.0
以下是来自节点的日志:
似乎我错过了与Firebase实时数据库相关的主要部分。有两种类型:实时数据库
和云Firestore
(下一代实时数据库)。在使用第二个名称空间时,我需要使用适当的firebase admin
,它应该是firestore
(不是database
,它是用于实时数据库-第一个):
似乎我错过了与Firebase实时数据库相关的主要部分。有两种类型:实时数据库
和云Firestore
(下一代实时数据库)。在使用第二个名称空间时,我需要使用适当的firebase admin
,它应该是firestore
(不是database
,它是用于实时数据库-第一个):
我不知道这有什么关系,但你能试着用承诺代替回访吗?感谢您的评论,但不,它无法解决问题。另外,您是否仔细检查了您的config.databaseURL
?日志显示已建立实时连接,我确信它是正确的数据库不知道它是相关的,但您能试着使用承诺而不是回调吗?感谢您的评论,但不,它无法解决问题。另外,您是否仔细检查了您的config.databaseURL
?日志显示已建立实时连接,我确信这是正确的数据库
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);
});