我正在开发一个具有Firebase和云功能的项目,但是我在这里苦苦挣扎:
我有一个具有相关ID的用户。 该ID(我们称其为“ oldID”)在数据库的其他节点中使用。 由于某些原因,我需要更改该ID并将其替换为另一个ID。
我想使用云功能来执行此操作,因为我知道Firebase不支持此“全部替换”功能。顺便说一句,我找不到在所有可能的节点上循环并查找该特定oldID的方法。
你们有什么建议吗?
谢谢, 公关
示例
用户-
id1 --
//user1 data
id2 --
//user2 data
组-
group1 --
id1:email1
id2:email2
group2--
然后,在某个时候,我需要将用户1(id1)的ID更改为另一个ID(比如说newid1)。我需要在以下示例中进行更改:
用户-
newid1 --
//user1 data
id2 --
//user2 data
组-
group1 --
newid1:email1
id2:email2
group2--
答案 0 :(得分:0)
读取整个用户集合 遍历每个文档.where('oldID', '==', <YOUR-VALUE>)
并将修改后的值添加到批处理中删除它,并使用其副本创建一个新值,则需要使用Object.assign()或更深的传播算子进行深拷贝:
let batch = firestore.batch()
firebase.firestore().collection('users').get().then(snap => {
snap.forEach(doc => {
let newID = // I don't know where you're getting this, your <<oldID>> is doc.id
let userData = { ... doc.data() }
batch.delete(doc.ref)
batch.set(firestore.collection('users').doc(newID), userData)
})
return batch.commit()
}).then(outcome => {
console.log(outcome)
res.end()
}).catch(e => {
console.error(e)
})
答案 1 :(得分:0)
如果这是一次性编辑,则需要执行。我建议您导出整个数据库:
desired <- merge(df1, df2, by = "ID", all.x = T)
desired$letters <- ifelse(is.na(desired$letters2), desired$letters, desired$letters2)
desired$letters2 <- NULL
下载数据库后,只需在编辑器中将其打开,然后执行查找/替换旧/新uid的操作即可
On the top right click 'Export JSON'