Javascript 使用firebase查询API很痛苦吗?
我开始在firestore学习firebase 我花了比我想要的更多的时间来理解引用类型,并试图让它与引用公文包类别的简单查询一起工作 代码如下:Javascript 使用firebase查询API很痛苦吗?,javascript,firebase,google-cloud-firestore,Javascript,Firebase,Google Cloud Firestore,我开始在firestore学习firebase 我花了比我想要的更多的时间来理解引用类型,并试图让它与引用公文包类别的简单查询一起工作 代码如下: try { const portfolioSnap = await db.collection("portfolio").get(); let portfolioDoc = portfolioSnap.docs; let categoriesRef = []; portfolioDoc.forEach(p => { ca
try {
const portfolioSnap = await db.collection("portfolio").get();
let portfolioDoc = portfolioSnap.docs;
let categoriesRef = [];
portfolioDoc.forEach(p => {
categoriesRef.push(p.data().category.get());
});
let categories = await Promise.all(categoriesRef);
let portfolio = [];
portfolioDoc.map((p, i) => {
let portfolioObject = {
...p.data(),
category: categories[i].data().name
};
portfolio.push(portfolioObject);
});
return portfolio;
} catch (error) {
console.warn("ERROR: ", error);
}
我不确定这是否有意义
我试图为每个投资组合
文档获取类别
,但我觉得这是设计过度,或者我完全用错了方法
如果我有我觉得会让事情变得更糟的图片或文件的参考资料,这就不算了。。。嗯,不漂亮。这里没什么奇怪的。这就是nosql数据库的工作方式(因为没有联接操作,文档之间也没有明确的关系,只有您定义的关系)。这里没有什么奇怪的。这就是nosql数据库的工作方式(因为没有联接操作,除了您定义的文档之外,文档之间也没有任何明确的关系)。LGTM,因此您有两个单独的公文包和类别集合。在获取公文包列表时,您可以循环此列表并获取相应的类别。你完全可以这样做。您可以通过提取所有类别并将它们映射到客户端来优化它。它会将请求从n减少到1,但是响应大小会更大。您是说在客户端获取它们,还是说如何将请求减少到1,因为现在它对每个公文包类别都有一个请求。a:获取所有类别,B:获取所有公文包,C:您将类别映射到公文包,但没有每个Portfolio的类别请求。在这种情况下,您将如何执行C?我对每个投资组合中的类别都有一个引用,但为了获得数据,我需要在所有投资组合记录中进行循环,以获得单个类别。c:循环投资组合,每个投资组合循环所有类别,如果达到匹配的类别,则打破内部循环。LGTM,因此,对于公文包和类别,您有两个单独的集合。在获取公文包列表时,您可以循环此列表并获取相应的类别。你完全可以这样做。您可以通过提取所有类别并将它们映射到客户端来优化它。它会将请求从n减少到1,但是响应大小会更大。您是说在客户端获取它们,还是说如何将请求减少到1,因为现在它对每个公文包类别都有一个请求。a:获取所有类别,B:获取所有公文包,C:您将类别映射到公文包,但没有每个Portfolio的类别请求。在这种情况下,您将如何执行C?我对每个投资组合中的类别都有一个引用,但为了获得数据,我需要在所有投资组合记录中进行循环,以获得单个类别C:你循环投资组合,每个投资组合循环所有类别,如果你达到了匹配的类别,你就打破了内部循环。我有一种感觉,这就是答案。我有一种感觉,这就是答案。