【问题标题】:Setting JSON node name to variable value将 JSON 节点名称设置为变量值
【发布时间】:2016-05-25 01:43:32
【问题描述】:

我大部分时间都在使用 Java 和 C++ 等语言,但我正在尝试学习 JavaScript。我试图完成的是一种通过传递的变量的值来设置父节点名称的方法。如果这对这段代码有影响,我正在使用 Firebase,但我认为不会。

var parent_node_name = "EPLU200";
var onComplete = function(error) {
  if (error) {
        console.log('Synchronization failed');
  } else {
        console.log('Synchronization succeeded');
  }
};

// update adds the data without replacing all of the other nodes
myFirebaseRef.update({
    parent_node_name: { // trying to change this part to not save as "parent_node_name" 
        id2: "1175",    // but instead as "EPLU200" 
        ...
  }
}, onComplete);

该操作可以很好地保存到我的 Firebase 服务器,但问题是传递变量的实际值而不是读取变量名称。

在 JavaScript 中是否有任何解决方法?我试着搜索它,但我不知道该怎么称呼它。

【问题讨论】:

  • 我意识到它非常相似。我很抱歉问了这么近的问题。不知道他们有专门针对此类内容的完整文档
  • 附带说明:将父节点名称与其包含的数据分离通常是一种好习惯 - 硬编码固定名称通常会导致自己编码陷入困境。如果您有一个“通用”节点名称,那么您可以轻松地在其他节点中保留对它的引用,并且如果其中一个子节点需要更新,则无需更新引用该节点的任何其他位置即可完成。

标签: javascript json firebase nosql


【解决方案1】:

取决于环境(即节点?)

myFirebaseRef.update({
    [parent_node_name]: {
        id2: "1175",
        ...
  }
}, onComplete);

在 MDN 的 New Notations in ES2015 doumentation 中查看注释为 Computed property names (ES6) 的代码

如果这不起作用,你必须这样做

var obj = {};
obj[parent_node_name] = {
    id2: "1175",
    ...
};
myFirebaseRef.update(obj, onComplete);

【讨论】:

  • [parent_node_name] 文字正是我所需要的。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-14
  • 1970-01-01
  • 2021-07-14
  • 2023-03-24
  • 1970-01-01
相关资源
最近更新 更多