Kinvey属性更新

时间:2018-04-04 09:05:21

标签: javascript kinvey

寻找更好的方法来使用包含更新值/新条目的另一个对象来更新对象的子对象。

这里param“pObj”是一个已经有些孩子的对象,只想用param“data”中可用的最新值更新pObj。

在代码下方,我使用的是Kinvey无服务器云平台。 Kinvey不支持“Object.children” - 不清楚原因。

下面的代码对我来说工作正常,但它看起来也很难看也固定深度。

function mergeObjects(pObj, data) {
  var tempObj = {};
  if (pObj) {
    tempObj = pObj;
  }
  if (typeof(data) == "object") {
    for (var j in data) {
      if (!tempObj[j]) {
        tempObj[j] = {};
      }
      if (typeof(data[j]) == "object") {
        for (var k in data[j]) {
          if (!tempObj[j][k]) {
            tempObj[j][k] = {};
          }
          if (typeof(data[j][k]) == "object") {
            for (var l in data[j][k]) {
              if (!tempObj[j][k][l]) {
                tempObj[j][k][l] = {};
              }
              tempObj[j][k][l] = data[j][k][l];
            }
          } else {
            tempObj[j][k] = data[j][k];
          }
        }
      } else {
        tempObj[j] = data[j];
      }
    }
  }
  return tempObj;
}

1 个答案:

答案 0 :(得分:0)

Kinvey传统BL使用节点0.10,这可能是你不能使用Object.children的原因吗?

它确实支持lodash,所以也许你可以使用lodash模块中的对象操作选项。

作为替代方案,您可以查看新的Flex Services,一个使用node6的微服务层。它允许您内联任何所需的npm模块,并将整个node.js运行时部署到我们的FSR运行时。