我在Vue JS应用程序中使用Firebase的Firestore:
"firebase": "^5.8.0",
"vue-firestore": "^0.3.16",
当我尝试获取一个具有引用另一个文档的字段的文档(Firestore中的引用类型)时,我会得到以下错误:
[Vue warn]: Error in render: "TypeError: Converting circular structure to JSON"
每当我将文档中该字段的类型更改为字符串时,它似乎工作得很好。
我理解这是因为Firestore中有些东西试图将文档(以及文档附带的一堆元数据)序列化到JSON,并且在某个地方有一个循环引用?
在我的数据结构和字段中,我没有循环引用。引用另一个文档的只是一个字段,而引用的文档没有对任何其他文档的引用。
我获取数据的代码是:
methods: {
getContent() {
const db = this.$firebase.firestore();
db
.collection('places')
.doc(this.$route.params.placeKey)
.orderBy('name')
.get()
.then(snap => {
this.places = []
snap.forEach(doc => {
this.places.push(doc.data())
})
})
}
所以我的问题是:
首先,我在代码中做错了什么吗?即使没有引发错误,Firestore的JS会为我解析引用吗?或者,我是否需要调用引用并自己解析它以获取引用的文档数据? 2)当您有可以引用的文档时,使用Firestore的最佳实践是什么?你应该使用推荐信吗?什么时候?你什么时候去变性?
谢谢!
发布于 2019-01-29 06:43:37
要回答关于存储引用的第二个问题:实际上,在编写这个答案时,没有将引用(即路径元素)存储为Reference
类型而不是将它们存储为字符串的真正优势。
请从Firebase https://www.youtube.com/watch?v=Elg2zDVIcLo&t=274s观看这段官方视频,其中包含详细的解释(从4:34开始)。
https://stackoverflow.com/questions/54410448
复制相似问题