这个问题在这里已有答案:
在我的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 回答
我不认为有办法改变文档ID,但即使有一种方法,你所做的是非常错误的 . 该ID应为唯一标识符,使自己成为UserID字段,例如使用Firebase Auth使用
firebase.Auth().currentUser.uid
作为Firestore中用户特定保存数据的ID .我建议你改变一般解决你的问题,更重要的是给你一个坚实的结构 . (Auth的UID是唯一的)
没有API可以更改现有文档的ID,也没有用于移动文档的API . 如果要将相同的内容存储在不同的文档中,则必须:
从现有密钥中读取文档 .
在新密钥下写入文档 .
删除旧密钥下的文档 .
您将希望在事务中运行这些操作,以确保操作以原子方式完成 .