如何在Firebase Firestore中更新文档ID?

时间:2018-08-31 11:33:43

标签: javascript firebase vue.js google-cloud-firestore

在我的Firestore数据库中,我已将用户的电子邮件作为文档密钥。如果我愿意,可以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 个答案:

答案 0 :(得分:4)

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

  1. 从现有密钥中读取文档。
  2. 用新键写文档。
  3. 使用旧键删除文档。

您将要在事务中运行这些操作,以确保这些操作原子完成。

答案 1 :(得分:2)

我认为没有办法更改文档ID,但是即使有办法您也做错了。该ID应该是唯一标识符,让自己成为UserID字段,例如,使用Firebase Auth使用firebase.Auth().currentUser.uid作为Firestore中用户特定的已保存数据的ID。

我建议您总体上进行更改,以解决您的问题,更重要的是为您提供坚实的结构。 (身份验证中的UID是唯一的)