我正在使用Google Firestore。有一个称为大学的集合,其中每个文档代表一所大学。
如何找到一所大学的名称并通过+1更新其view_count?
[Collection: Universities]:
[Document: 0JsaLtcfdDaEtHLMlMrh]:{
name: The University of Sydney,
view_count: 1
};
[Document: K2z7DMhKreyDniGUpo2t]:{
name: University of New South Wales,
view_count: 2
}
答案 0 :(得分:3)
您可以执行以下操作:
db.collection("Universities").where("name", "==", "The University of Sydney")
.get()
.then(function(querySnapshot) {
querySnapshot.forEach(function(doc) {
// doc.data() is never undefined for query doc snapshots
//console.log(doc.id, " => ", doc.data());
var docData = doc.data();
var updatedCount = docData.view_count + 1;
var universityRef = db.collection('Universities').doc(doc.id);
var setWithMerge = universityRef.set({
view_count: updatedCount
}, { merge: true });
});
})
.catch(function(error) {
console.log("Error getting documents: ", error);
});
因此,在这里,您可以做的是首先使用where
在集合中查询以获取具有特定名称的所有文档,然后在querySnapshot
内获得一个doc对象,然后可以创建的引用该文档并使用view_count
的{{1}}方法更新(覆盖)其set
属性值,以保持其他属性值不变。
注意:这是通用的Web JS解决方案。您可以在angular应用中使用相同的逻辑并编写打字稿代码