我有一个网站,用户可以做课程。当用户开始一个课程时,我希望将课程标识符添加到FireStore中的用户文档中。在网站上,用户有自己的个人资料页面。其中一个区段是正在进行的课程区段,用户可以在该区段中查看他们当前注册的课程。
我可以将课程文档键添加到用户文档上的一个字段中,一旦他们开始课程,该字段是一个字符串数组,包含另一个集合中文档的键。
GetRegrendCareersList=async()=>{
let careersEnrolled = [];
let careersEnrolledTemp = [];
let careersEnrolledDocumentKeys = ["84YU2pLABF6qUvUEuwIm", "kwBaAUwkjTutGTcIKShw"];
await careersEnrolledDocumentKeys.forEach((documentKey) =>{
console.log("documentKey: ", documentKey);
db.collection("...")
.where("courseDocumentKey", "==", documentKey)
.get()
.then(
(querySnapshot) => {
if (querySnapshot.empty) {
// doc.data() will be undefined in this case
console.log("No such document!");
return;
}
querySnapshot.forEach((doc) => {
console.log("getEnrolledCareersList Document data:", doc.data());
const {
courseName,
courseId,
coursePhotoUrl,
courseDocumentKey,
} = doc.data();
careersEnrolledTemp.push({
courseName,
courseId,
coursePhotoUrl,
courseKey: courseDocumentKey,
});
});
},
function(error) {
console.log("Error getting document Error: ", error);
},
);
});
JSX组件:
<div
style={{
// border: "solid #8492A6 5px",
display: "flex",
flexDirection: "column",
//flexWrap: "wrap",
justifyContent: "flex-start",
padding: "0 0%",
}}>
{this.state.currentPaths.map((item, index) => (
<div
style={{
display: "flex",
flexDirection: "row",
padding: "1% 1%",
}}>
<img
alt={"career image"}
src={item.coursePhotoUrl}
/>
<div
style={{
// border:"solid red 1px",
display: "flex",
flexDirection: "column",
justifyContent: "space-evenly",
padding: "0 2%",
}}>
{/*Career Name Label*/}
<label
style={{
// border: "solid #8492A6",
textAlign: "center",
}}>
{item.courseName}
</label>
{/*Career Percentage Completed Label*/}
<label
style={{
// border: "solid #8492A6",
textAlign: "center",
}}>
Percentage
</label>
</div>
</div>
))}
</div>
我最终这样做了,它解决了我的问题。一个朋友帮我拿到了这个,还有@道格·史蒂文森非常感谢。
getCourse = id => db.collection("abc")
.doc(id)
.get();
getEnrolledCareersList = async (courseIds = ["1", "2"]) => {
const requests = courseIds.map(this.getCourse);
const responses = await Promise.all(requests);
const enrolledCourses = responses.map(doc => doc.data());
this.setState({
...this.state,
enrolledCourses,
});
};
我有一个云Firestore DB,其结构如下: null null 有人能想出一个优雅的解决这个问题的办法吗?
问题内容: 我正在使用Firebase函数和Firebase Firestore开发用于存储用户数据的API。 我想使用存储在其字段中的属性来查找文档。这是Firebase文档,其中说明了如何实现相同的功能。 我想处理两种情况 在没有文件的情况下 有两个以上具有当前条件的文件 如何处理以上两种情况? 问题答案: 按照上面的注释中的“讨论”,在Cloud Function中,您可以使用方法返回的方法
我正在使用Firebase函数和Firebase FiRecovery开发一个存储用户数据的API。 我想使用存储在字段中的属性来定位文档。这是Firebase文档,其中说明了如何实现相同的目标。 我想处理两种情况 > 如果没有符合当前条件的文件 如果有两份以上的现有条件文件 上述两种情况如何处理?
在Firestore中,我有一个用户集合,在每个用户文档中存储一个名为favorites的集合,该集合包含标记为favorites(存储)的文档的ID 我可以采取另一种方法来获取两个集合并手动过滤它们,但我使用的是Firebase RecycerView适配器,它显示的所有数据都基于查询,这将使事情更加高效。 这样的结果是如何实现的呢?如果需要进一步的解释,请告诉我
我试图创建一个查询来获取一个firestore集合/文档,其中userId等于当前userId,或者当前userId等于contributorsid。 我想让它给我所有陈述属实的文档。但它只返回第一个。如果我选择只包含其中一个查询(“where”),它们都会工作并返回正确的文档。
我将编写此查询,它在Console中工作。sql或Workbench中,但当我在@Query中使用它时,我得到了一个语法错误! 在我的IDE中,错误是在下次选择