如何更新firebase firestore中的文档ID? [重复]

这个问题在这里已有答案:

在我的firestore数据库中,我将've made the user'的电子邮件作为文档密钥 . 如果我想要我做 db.collection('users').doc('email_id') 来执行某些操作 . 现在问题是当用户更新他们的电子邮件ID时,我没有找到任何方法来更新firestore中的 document id .

我试过这么做

db.collection('users').doc(old_email).update({
  id: new_email
})

但实际上创建了一个名为 id 的新字段,其中新的电子邮件作为该文档中的值而不是更新实际的 document id ,以便我可以在 doc() 内传递它并获取有关用户的相同数据 .

有谁知道怎么做?如果是这样,请分享 .

在发布此问题之前,我已经检查了google和firestore文档,但没有找到更新文档ID的方法 . 请帮忙 .

回答(2)

3 years ago

我不认为有办法改变文档ID,但即使有一种方法,你所做的是非常错误的 . 该ID应为唯一标识符,使自己成为UserID字段,例如使用Firebase Auth使用 firebase.Auth().currentUser.uid 作为Firestore中用户特定保存数据的ID .

我建议你改变一般解决你的问题,更重要的是给你一个坚实的结构 . (Auth的UID是唯一的)

3 years ago

没有API可以更改现有文档的ID,也没有用于移动文档的API . 如果要将相同的内容存储在不同的文档中,则必须:

  • 从现有密钥中读取文档 .

  • 在新密钥下写入文档 .

  • 删除旧密钥下的文档 .

您将希望在事务中运行这些操作,以确保操作以原子方式完成 .