是否可以重命名 Firebase 实时数据库中的密钥?

2023-12-13

我想知道有没有办法更新键值?

让我们使用以下数据:

my data

我正在使用 set() 来写入数据。 现在,我希望用户编辑他们的bookTitle两个地方都需要改变。我尝试使用 update() 但似乎无法使其工作。我只能编辑bookTitle in bookInfo NOT on books.

搬家不是一个选择,因为它会抹去bookData。 我也尝试使用push()进行编写,但是,我无法正确搜索,因为我没有pushID(我需要搜索,因为用户不能拥有两本同名的书)

那么,有没有办法更新键值呢? 或者,有更好的方法吗?我接受建议。谢谢你!

Update:这就是我目前用来更新里面书名的内容bookInfo

var bookName = document.getElementById('bookName').value;

firebase.database().ref('books/' + bookName + '/bookInfo').update({
    bookTitle : bookName
});

我想我明白你想做什么。 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.

Caveat:这依赖于读取数据,然后执行第二次异步更新。如果您可能有多个用户同时操作相同的数据,这可能会导致问题。你可以使用交易以原子方式执行此操作,但如果/books是顶级资源,节点较多,可能会导致性能问题。

如果一次可能只有一个人编辑数据,则上述解决方案就可以了。如果没有,您可能需要考虑使用非用户控制的标识符,例如推送 ID。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

是否可以重命名 Firebase 实时数据库中的密钥? 的相关文章

  • 如何正确清理来自 AngularJS 控制器的无效输入的表单?

    我有一个 AngularJS 表单 其中包含 除其他字段之外 类型之一url 后者很重要 因为这会强制相应的输入成为有效的 URL 在某些条件下 例如 要关闭具有此类表单的模式对话框 我想以编程方式清除该表单 为此 我实现了方法reset基
  • Number.IsNaN() 比 isNaN() 更糟糕吗

    Soooooo isNaNJavaScript 显然被破坏了 比如 isNaN isNaN isNaN true isNaN false isNaN 0 返回 false 当它们看起来都是 不是数字 在 ECMAScript 6 中 草案包
  • 通过 JavaScript 获取表单名称

    我有一个简单的问题 但我在网上找不到好的解决方案 我有这个 HTML 代码
  • 如何在React Native Android中获取响应头?

    您好 我想在获取 POST 请求后获取响应标头 我尝试调试看看里面有什么response with console log response 我可以从以下位置获取响应机构responseData但我不知道如何获取标题 我想同时获得标题和正文
  • 是否可以使用 Firebase 安排推送通知? [复制]

    这个问题在这里已经有答案了 我已经阅读了我能找到的所有文档 但仍然不知道这是否可行 如果我是用户 我可以安排特定时间的推送通知吗 Example 1 我是用户并打开应用程序 2 我允许通知并转到 pickerView 或其他任何内容 并设置
  • 本地推送通知到在应用程序内运行 JS 代码的 Win8 Live Tile

    我正在尝试将更新发送到我的应用程序的磁贴 当应用程序运行时 这可以正常工作 例如 当用户单击按钮时 我可以轻松地将磁贴更新通知发送到磁贴 我无法解决的是当应用程序无法运行时如何更新磁贴 我找到的唯一选择是使用以下命令从远程 Web 服务器拉
  • JavaScript 验证和 PHP 验证?

    我正在使用 jquery 验证插件来验证空表单 我还应该在 PHP 中检查一下以确保 100 正确吗 或者用 javascript 验证就可以了 谢谢 您应该始终在服务器上进行验证 如果用户以某种方式不使用 Javascript 提交表单
  • 按下回车键时不刷新页面

    我遇到了一些问题 只要表单中有输入 回车键就会触发页面刷新 下面的代码 如果按下回车并且文本区域 input 中没有输入任何文本 则不会刷新页面 但是如果按下回车并且 input中有输入或者光标位于文本区域 我不确定是什么触发了它 因为 s
  • React autoFocus 将光标设置为输入值的开头

    我有一个受控输入 最初显示一个值 我已将该输入设置为自动聚焦 但当我希望它出现在末尾时 光标出现在输入的开头 我知道这可能是因为自动对焦是在值之前添加的 但我不能 100 确定 在输入字段末尾完成光标初始化的最佳方法是什么 var Test
  • JavaScript 继承;调用和原型

    要在Javascript中实现继承 通常需要执行以下两个步骤 假设我有一个基类 Animal var Animal function name this name name 我现在想从中派生一个子类 Dog 所以我想说 var Dog fu
  • IE 中的 XPath 查询使用从零开始的索引,但 W3C 规范是从一开始的。我应该如何处理差异?

    问题 我正在转换目前仅适用于 Internet Explorer 的相对较大的 Javascript 代码 以便使其也适用于其他浏览器 由于代码广泛使用 XPath 我们做了一些兼容性功能以使事情变得更容易 function selectN
  • 将 Firebase 云消息传递与 Windows 应用程序结合使用

    我在 Android 和 iOS 应用程序中使用 Firebase Cloud Messaging 但是我还有此应用程序的 Windows Mac OS 版本 我想保留相同的逻辑 我知道 Firebase Cloud Messaging 可
  • 如何正确取消引用然后删除 JavaScript 对象?

    我想知道从内存中完全取消引用 JavaScript 对象的正确方法 确保删除时不会在内存中悬空 并且垃圾收集器会删除该对象 当我看这个问题时在 JavaScript 中删除对象 https stackoverflow com questio
  • 改变 JavaScript 中的顶部填充

    以下是我在 css 中设置顶部填充的方法 body font size font size px margin 0 padding 100px 0 20px 0 width 100 important 如何使用最简单的 javascript
  • LeafleteachLayer函数不会迭代所有Layer

    使用 GeoJSON 数据数组创建一些标记 getJSON GetLocationsServlet function data L geoJSON data onEachFeature onEachFeature addTo mymap G
  • 如何从浏览器向服务器发送“页面将关闭”消息?

    我想向每个 html 文档添加一个脚本 JavaScript 该脚本向服务器发送两条消息 页面确实打开了 页面将关闭 此消息包含页面打开的时间 打开消息应在文档加载时 或加载完成时 发送 这是简单的部分 The close message
  • 在 iOS 7 Safari 中,如何区分通过边缘滑动与后退/前进按钮的 popstate 事件?

    在 iOS 7 Safari 中 现在有两种后退 前进导航方式 使用底部的传统后退 前进按钮箭头或从屏幕边缘滑动 我正在使用动画在 ajax 应用程序中的页面之间进行转换 但如果用户通过边缘滑动进行导航 我不想触发该转换 因为这本身就是一个
  • 什么是 WKWebView 中的 WKErrorDomain 错误 4

    fatal error LPWebView encounters an error Error Domain WKErrorDomain Code 4 A JavaScript exception occurred UserInfo 0x7
  • 如何从 json 文件创建模型? (ExtJS)

    这是我想使用 json 文件创建的模型 Ext define Users extend Ext data Model fields name user id type int name user name type string 为了根据服
  • 使用velocity.js制作可拖动元素的动画

    我正在使用velocity js 为用户拖动的可拖动 SVG 元素设置动画 然而 velocity js 将先前的 mousemove 坐标排队并通过所有后续的 mousemove 坐标进行动画处理 我想要的是velocity js 不要对

随机推荐

  • 将 char[] 转换为 byte[]

    我想在Java中将字符数组转换为字节数组 有哪些方法可以进行这种转换 无需创建即可转换String object import java nio CharBuffer import java nio ByteBuffer import ja
  • RouteData.Values 保持为空

    我的路线代码如下所示 RouteTable Routes MapPageRoute IDP Person IDP Person aspx 现在我想获取表单上的数据 通常它的工作原理如下 int id Convert ToInt32 Page
  • SQLException:字符串或二进制数据将被截断

    我有一个 C 代码 可以批量执行大量插入语句 在执行这些语句时 我收到 字符串或二进制数据将被截断 错误和事务回滚 为了找出是哪个插入语句导致了这个问题 我需要在 SQLServer 中一项一项地插入 直到遇到错误 是否有聪明的方法可以使用
  • NSNotificationCenter 与委托(使用协议)?

    它们各自的优点和缺点是什么 我应该在哪里具体使用它们 这里的经验法则是有多少客户希望收到事件通知 如果它主要是一个对象 例如 关闭视图或对单击的按钮进行操作 或对失败的下载做出反应 那么您应该使用委托模型 如果您发出的事件可能同时引起许多对
  • 如何从应用程序调用关闭电源、重新启动对话框?

    当从我的应用程序中长按电源按钮时 我想调用关闭电源 重新启动等对话框 与默认的 Android 对话框相同 我不需要从我的应用程序中直接调用重新启动 关闭电源等 只是想调用该对话框 怎么称呼呢 或如何在应用程序上发送电源按钮键 提前致谢 如
  • Nuxt.js - 是否可以将自定义路径/基设置为静态文件的网址?

    TLDR 如何更改静态文件路径src nuxt
  • 从 .idea 文件夹中忽略什么?

    可能的重复 Intellij Idea 9 10 要签入 或不签入 源代码管理的哪些文件夹 我开始使用 WebStorm 进行 Web 开发 但不确定要添加什么以及要从我们的 Git 存储库中排除什么 显然里面有一些文件 idea文件夹旨在
  • 更改 DataGridViewRow 的轮廓

    如果满足某个条件我想改变轮廓DataGridViewRow蓝色使其脱颖而出 我知道这不是BackColor因为它改变了行的背景颜色 我尝试过改变ForeColor为蓝色但没有任何变化 我不相信这是选择风格 因为这种行为不是我想要的 有什么建
  • WPF:如何使 DataGrid 与动态列的绑定可编辑?

    我需要将一些数据绑定到具有可变列数的 DataGrid 我使用以下代码使其工作 int n 0 foreach string title in TitleList DataGridTextColumn col new DataGridTex
  • 在 Android 上将 HTML 转换为图像(任何格式)[关闭]

    Closed 这个问题需要细节或清晰度 目前不接受答案 有谁知道如何在Android上将html代码 其中包含图像 转换为图像 我知道如何使用 JLabel JEditorPane 和 BufferedImage 在 Java 上实现它 但
  • 具有不可移动、默认可构造值类型的 map/unordered_map

    Update 出现在23 5 4 3中here那m 1 版本应该有效 Update2 m 1 正在使用 gcc4 9 1 具体来说 std mutex 假设我想要一个std unordered map
  • Javascript InnerHTML 删除表单元素中的数据

    我有一个带有按钮的表单 允许您向表单添加字段
  • 如何正确取消初始化 OpenSSL

    在我的 OpenSSL 客户端中 我遇到的问题是 当我选择静态链接 libeay32 和 ssleay32 而不是动态链接时 我从 Visual Leak Detector 收到了大量内存泄漏错误 我从 OP 中复制了命令这个线程 但我还剩
  • R 中多个数据帧的相同功能

    我是 R 新手 这是一个非常简单的问题 我发现了很多与我想要的类似的东西 但并不完全一样 基本上我有多个数据框 我只想在所有数据框上运行相同的函数 for 循环可以工作 但我不确定如何正确设置它来调用数据帧 它似乎也最喜欢使用 R 的 la
  • php exec() 命令权限被拒绝

    我有一个 C 可执行文件 skypeforwarder 如果我在 Mac 的终端中使用命令行 skypeforwarder 就可以工作 亨利 Users henry Desktop skypeForwarder skypekit sdk s
  • 如何按照请求的顺序处理 jquery ajax 请求

    我正在制作一个 java servlet 页面 用于检查域名列表 并通过 jquery ajax 请求检查每个名称 除了结果被乱序附加到 DOM 之外 它工作得很好 什么是按请求顺序处理请求但又像长轮询效果一样异步的最佳方法 我是 Java
  • 在启动时通过UAC授予c++程序管理权限

    所以我做了一些研究 但我有兴趣了解如何让他的程序在执行之前向 UAC 请求管理权限 这是否需要在 ShellExecute 中使用 runas 我意识到这是我在编程冒险中需要理解的事情 因为几乎我安装的每个程序都问过我这个问题 例如 如果我
  • 如何将整数转换为日期对象Python?

    我正在 python 中创建一个模块 在其中我收到整数格式的日期 例如20120213 表示 2012 年 2 月 13 日 现在 我想将这个整数格式的日期转换为 python 日期对象 另外 是否有任何方法可以减去 添加此类整数格式日期中
  • Android R 中的后台服务在省电模式下停止

    我编写了一个 Android 应用程序 通过更改电量来检查电池电量 并在电量达到特定值时发出警报 我在我的应用程序中使用了广播接收器和后台服务 它在所有 Android 版本中都能正常工作 但在 Android R 中 当打开省电模式时 服
  • 是否可以重命名 Firebase 实时数据库中的密钥?

    我想知道有没有办法更新键值 让我们使用以下数据 我正在使用 set 来写入数据 现在 我希望用户编辑他们的bookTitle两个地方都需要改变 我尝试使用 update 但似乎无法使其工作 我只能编辑bookTitle in bookInf