mat*_*tox 4 javascript firebase google-cloud-functions google-cloud-firestore
我有一个问题困扰了我好几天。我正在尝试创建一个从 Firestore 数据库读取的 Firebase Cloud 函数。
我的 Firestore 数据库如下所示:
问题是我不能users这样列出:
db.collection('users').get().then((snapshot) => snapshot.forEach(...));
Run Code Online (Sandbox Code Playgroud)
如果我尝试这样做,我会得到空响应,就像我的集合中没有用户一样users。
但我尝试直接访问用户,它有效:
await db.collection('users/5CZxgu8nmNXu2TgplwOUdOIt8e33/receipts').get()
Run Code Online (Sandbox Code Playgroud)
我的完整代码:
import * as functions from 'firebase-functions';
const admin = require('firebase-admin');
admin.initializeApp(functions.config().firebase);
exports.cat = functions.https.onRequest(async (req, res) => {
const receiptList: any = [];
const db: Firestore = admin.firestore();
const usersRef = await db.collection('users').get();
console.log(usersRef.empty); // Returns true
const receiptsRef = await db
.collection('users/5CZxgu8nmNXu2TgplwOUdOIt8e33/receipts')
.get();
receiptsRef.forEach((receipt: any) => {
console.log(receipt);
receiptList.push(receipt);
// Here I can access data
});
res.send(receiptList);
return '';
});
Run Code Online (Sandbox Code Playgroud)
有谁知道我做错了什么?谢谢你!
您的用户集合实际上是空的。看到文档 ID 是如何以斜体显示的吗?这意味着实际上并没有文档在其位置,但是,有一些子集合,其下组织有文档。
当您查询集合时,您只能获取紧邻该集合的文档。查询不会选取子集合中组织的文档。在这方面,查询被认为是“浅薄的”。正如您所看到的,您需要更深入地了解子集合才能获取其文档。
最重要的是,您所显示的查询正在完全执行它们应该执行的操作。
再次感谢道格的帮助。
我设法解决我的问题。这是我的完整解决方案。
import * as functions from 'firebase-functions';
import {
Firestore
} from '@google-cloud/firestore';
const admin = require('firebase-admin');
admin.initializeApp(functions.config().firebase);
exports.cat = functions.https.onRequest(async (req, res) => {
const receiptList: any = [];
const db: Firestore = admin.firestore();
const receipts = await db.collectionGroup('receipts').get();
receipts.forEach((doc: any) => {
console.log(doc.id, ' => ', doc.data());
receiptList.push(doc.data());
});
res.send(receiptList);
return '';
});
Run Code Online (Sandbox Code Playgroud)
小智 5
.get()获取所有文档。在您的情况下,这些文档是空的,因此.get()不考虑它们。
我为此找到的最简单的解决方案是将 替换.get()为.listDocuments(). 现在您可以像阅读文档一样阅读每个文档条目。
| 归档时间: |
|
| 查看次数: |
6980 次 |
| 最近记录: |