如何将Firestore集合存储到变量中,然后使用Javascript访问其中的文档?
我很高兴你正在阅读,因为我在任何地方都找不到答案。问题是我正在用firestore构建一个应用程序,它有两个集合:用户和优惠。以前我在做什么如何将Firestore集合存储到变量中,然后使用Javascript访问其中的文档?,javascript,google-cloud-firestore,Javascript,Google Cloud Firestore,我很高兴你正在阅读,因为我在任何地方都找不到答案。问题是我正在用firestore构建一个应用程序,它有两个集合:用户和优惠。以前我在做什么 db.collection("users").doc(firebaseUser.uid) .get() .then( doc => { let username = doc.data().user_name )} 每次我需要访问一个用户的数据和相同的报价。但我意
db.collection("users").doc(firebaseUser.uid)
.get()
.then( doc => {
let username = doc.data().user_name
)}
每次我需要访问一个用户的数据和相同的报价。但我意识到最好是一次获取所有数据,将其放入一个对象中,然后在那里查找。由于firestore不允许您一次获取所有一级集合,因此我创建了一个名为MyAppName的新集合,其中包含用户和提供的文档,因此我将所有内容向下移动了一级。然后我试着去做
db.collection("MyAppName")
.get()
.then(doc => {
let username = doc.doc("users").collection(firebaseUser.uid).data().user_name;
})
但是doc.doc不是一个函数。当我这样做的时候
console.log(doc.data())
它也不是一个函数,但当我这样做的时候
console.log(doc.docs.map(docs => docs.data()))
它回来了
(2) [{…}, {…}]
0:
1: {offer_type: "Product"}
__proto__: Object
1:
user_name: "Ale"
__proto__: Object
length: 2
这是一个真正的背部疼痛。我的应用程序以另一种方式运行得非常完美,但我想让它只加载一次数据,因为api非常慢,而且firestore也会根据请求收费。
非常感谢您的帮助:
编辑:我的数据库结构是
MyAppname
|
users
| |
| user_name
|
offers
|
offer_type
我解决了它,方法是
const dataobject = doc.docs.map(docs => docs.data())
let users = (dataobject[1])
let offers = (dataobject[0])
然后用对象方法处理用户和报价。请编辑问题以显示最终的数据库结构。我不清楚你现在有什么。还要记住,doc变量实际上是DocumentSnapshot对象,而不是DocumentReference。