我想我明白了您要做什么。Firebase没有通过更新“重新命名”路径的一部分的概念。相反,您将必须完全
删除现有节点并重新创建它。您可以这样做:
var booksRef = firebase.database().ref('books');booksRef.child(oldTitle).once('value').then(function(snap) { var data = snap.val(); data.bookInfo.bookTitle = newTitle; var update = {}; update[oldTitle] = null; update[newTitle] = data; return booksRef.update(update);});这将从中删除信息,books/oldTitle并在中添加新标题books/newTitle。
警告:这取决于读取数据,然后执行第二次异步更新。如果您可能有多个用户同时操作同一数据,则可能会导致问题。您可以使用事务来自动执行此操作,但是如果它/books是具有许多节点的顶级资源,则可能会导致性能问题。
如果一个人可能一次编辑数据,则上述解决方案很好。如果不是,您可能要考虑使用非用户控制的标识符,例如推送ID。



