尽管是在控制台中创建的,但 Firestore 条目未显示在 Node.js 中
我正在使用 Firestore 开发 Node.js 应用程序。我能够使用 Firestore 的 node.js 创建条目并在 Firestore 控制台中查看它们。但是,当我尝试使用 Firestore 的 Node.js 库获取子集合时,子集合没有显示。我试过等待一段时间,但问题不是因为延迟。
我已经能够在一个函数中重现。这是我用来在 Firestore 中创建新操作条目然后阅读它的代码片段。请注意,如果我在操作之间造成延迟,也会发生同样的情况:
class TesterClass {
constructor(db) {
this.db = db;
setTimeout((async () => {
this.testFirestore1();
}).bind(this), 1000);
setTimeout((async () => {
this.testFirestore2();
}).bind(this), 2000);
...
async testFirestore1() {
const uid = 'uid3';
const userDoc = await this.db.collection("users").doc(uid);
const userSnapshot = await userDoc.get();
console.log(`User exists: ${userSnapshot.exists}`);
const userData = userSnapshot.data();
const subCollection = await userDoc.collection("subcollection");
const subDoc = await subCollection.doc('subDoc');
// Works if I add here: await subDoc.set({ a: 1 });
const subSubCollection = await subDoc.collection("subSubCollection");
const subSubDoc = await subSubCollection.doc("latest");
await subSubDoc.set({ a: 1 });
const subcollectionRef = await this.db.collection('users').doc(uid).collection('subcollection');
const subcollection = await subcollectionRef.get();
console.log(`subcollection ref path: ${subcollectionRef.path}`);
console.log(`subcollection for user ${uid}: ${subcollection.size}`, subcollection.docs);
}
async testFirestore2() {
const uid = 'uid3';
const subcollectionRef = await this.db.collection('users').doc(uid).collection('subcollection');
const subcollection = await subcollectionRef.get();
console.log(`subcollection ref path: ${subcollectionRef.path}`);
console.log(`subcollection for user ${uid}: ${subcollection.size}`, subcollection.docs);
}
}
当我运行这段代码时,输出显示
User exists: false
subcollection ref path: users/uid3/subcollection
subcollection for user uid3: 0 (0) []
subcollection ref path: users/uid3/subcollection
subcollection for user uid3: 0 (0) []
即使子集合在 Firestore 控制台中可见。
有谁知道为什么子集合没有出现在 Node.js 中,我该如何解决这个问题?
回答如下: