我正在尝试重新创建instagram关注者和关注功能,但逻辑似乎存在错误。代码没有错误。现在,当按下“关注”按钮时,我正在做的是创建一个名为“用户关注”的集合,将“当前UID”添加为“文档ID”,然后将以下目标用户数据存储为[targetuid: 1]。同时,我创建一个名为“ user-followers”的集合,将“ Target UID”添加为“ document ID”,然后将关注者数据存储为[currentuid:1]。这里的问题是,仅关注一个用户时,它就可以工作。当我尝试关注另一个用户时,现有的关注用户数据将被我关注的新用户覆盖,而不是附加数据。
示例:假设currentUser是A,user1 = B,user2 = C 当我跟随user1和user2时,我在firestore中的数据库应反映为:
user-following -> A -> [B:1,C:1]
user-followers -> B -> [A:1]
user-followers -> C -> [A:1]
以上内容翻译为集合-> documentID->字典值 问题是我没有得到上述结果。相反,当我跟随user2时,user1的值将被覆盖。因此,仅存储了一个字典值。
我知道问题出在我试图在文档ID下创建字段的方式中。我知道我可以创建一个字典并附加值,但是我认为对于原本简单的解决方案来说,这是很多代码。
func follow(){
guard let currentUid = Auth.auth().currentUser?.uid else
{return}
guard let uid = uid else {return}
self.isFollowed = true
// Add followed user to current user-following structure
Firestore.firestore().collection("user-
following").document(currentUid).setData([uid:1])
// Add current user to followed user-follower structure
Firestore.firestore().collection("user-
followers").document(uid).setData([currentUid:1])
}
答案 0 :(得分:0)
没关系。意识到我必须使用合并。
Firestore.firestore().collection("user-
following").document(currentUid).setData([uid:1], merge: true)