我正在尝试更新Parse中的一个对象,该对象有一个其他对象数组作为其属性之一。
E.g。有一个父类型'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(...);
我已经尝试过:
只保存空数组type1.set("childTypes", [])
- 它有效。
但是只要我向它添加一个Type2对象 - 同样的错误,尽管这些Type2对象是从同一个type1对象的“childTypes”数组中获取的。
还有一个非常奇怪的情况 - 如果我将Type1对象转换为带有JSON.stringify的字符串,它会产生正确的结果,但是这个invokation JSON.stringify(type1.get("childTypes"))
给出了与未保存的ParseObject完全相同的错误。我不知道stringify是如何与Parse.Object连接的。可能解析会覆盖一些东西。
也许在Javascript SDK中有不同的设置数组的方法?我在API中找不到它。这个'Parse'这个名字很难谷歌任何东西:(尤其是'json'这个词。
这里是ParseObject的来源,当对象没有id属性时会产生此错误。我的层次结构中只有一个没有id的对象,它是一个数组。任何帮助将不胜感激。
答案 0 :(得分:0)
阵列很好:| 只是另一个错误导致在层次结构中添加其他对象,并且在控制台日志中不可见。
虽然有趣的是为什么这个错误会破坏JSON.stringify