将 Firestore 文档作为纯 Javascript 对象获取?
Posted
技术标签:
【中文标题】将 Firestore 文档作为纯 Javascript 对象获取?【英文标题】:Get Firestore document as plain Javascript object? 【发布时间】:2018-06-11 19:16:27 【问题描述】:我目前正在手动遍历 firestore 中的文档字段并将它们放入我字符串化为 JSON 的对象中。
有没有办法自动化这个过程?比如:
var userEnrollments = ToJson(await admin.firestore().collection(USERS + "/" + x.uid + "/" + ENROLMENT));
【问题讨论】:
【参考方案1】:DocumentSnapshot 有一个方法 data() 将文档的全部内容(不包括子集合)作为纯 javascript 对象返回。
admin.firestore().doc('path/to/doc').get().then(snapshot =>
const data = snapshot.data() // a plain JS object
)
【讨论】:
不幸的是,这似乎没有捕获参考。例如,注册文档有一个对课程文档的引用,但使用 snapshot.data() 将其显示为文档引用而不是普通的 JS 对象.. 对,就是这样。 Firestore 中的所有文档读取都很浅。您必须再次查询才能获得下一个文档。 ***.com/questions/46568850/… 这让我非常难过,我想将 ID 存储到那些引用以使深层副本正常工作会更有意义,而不是这会破坏整个事情的目的.. ***.com/questions/46900906/… ***.com/questions/46568850/…【参考方案2】:尝试使用可观察的
var userEnrollments = Observable<User>;
Document userDoc = this.db.doc<User>('User/'+id);
this.userEnrollments = this.userDoc.valueChanges();
您可以使用数组,例如:Observable<User[]>;
和 FirestoreCollection<User>;
我在角火中使用类似的。
您也可以在 firebase 中使用 ASYNC
。
【讨论】:
以上是关于将 Firestore 文档作为纯 Javascript 对象获取?的主要内容,如果未能解决你的问题,请参考以下文章
Firebase firestore云功能显示错误:无效使用“undefined”类型作为Firestore参数
Cloud Firestore 文档添加给出错误“参数“数据”的值不是有效的 Firestore 文档。不能使用“未定义”作为 Firestore 值”