使用 Parse JavaScript SDK 更新对象数组

Update array of objects with Parse javascript SDK

本文关键字:对象 数组 更新 SDK Parse JavaScript 使用      更新时间:2023-09-26

我正在尝试更新 Parse 中的一个对象,该对象具有其他对象的数组作为其属性之一。

例如,有一个父类型"Type1",它有一个数组属性"childTypes",它存储"Type2"对象。

如果我从服务器查询 Type1 然后将其保存回来,它可以工作,但我想在查询后更新 Type2 实例的某些字段,将它们重新排列在数组中,然后保存回 Type1。

我收到错误"无法创建指向未保存的 ParseObject 的指针",但我检查了 Type1 对象有它的 id,所有 Type2 实例都有它们的 id。它们是 Parse.Object 对象。

我正在尝试像这样保存:

var oldChildTypes = type1.get("childTypes");
// rearrange childtypes here ...
var childTypes = [];
childTypes.push(...) // push rearranged Type2 items one by one
type1.set("childTypes", childTypes);
type1.save(...);

我已经尝试过:

  1. 只保存空数组type1.set("childTypes", []) - 它有效。但是一旦我向其添加 Type2 对象之一 - 同样的错误,尽管这些 Type2 对象取自同一 type1 对象的"childTypes"数组。

  2. 还有一个非常奇怪的情况 - 如果我使用 JSON.stringify 将 Type1 对象转换为字符串,它会产生正确的结果,但这个调用JSON.stringify(type1.get("childTypes"))给出了与未保存的 ParseObject 完全相同的错误。我不知道stringify是如何与Parse.Object连接的。可能解析覆盖某些内容。

也许在Javascript SDK中有不同的设置数组的方法?我在 API 中找不到它。"Parse"这个名字使得很难用谷歌搜索任何东西:(尤其是"json"这个词。

这里是 ParseObject 的源代码,当对象没有 id 属性时会产生此错误。我的层次结构中只有一个对象没有 id,它是一个数组。任何帮助将不胜感激。

数组很好:|只是另一个错误导致在层次结构中添加其他对象,并且在控制台日志中不可见。

虽然有趣的是为什么这个错误会破坏 JSON.stringify