是否可以在对象中保存“空”对象以保存引用,而不必在之前获取完整对象?
我正在这样做:
var myObject = new MyObject();
myObject.id = "id I retrieved somewhere on my client device"
// later
var user = request.user;
user.set("key", myObject);
但它不起作用,它说“无法创建指向未保存 ParseObject 的指针”
是否可以在对象中保存“空”对象以保存引用,而不必在之前获取完整对象?
我正在这样做:
var myObject = new MyObject();
myObject.id = "id I retrieved somewhere on my client device"
// later
var user = request.user;
user.set("key", myObject);
但它不起作用,它说“无法创建指向未保存 ParseObject 的指针”
我认为createWithoutData方法是您正在寻找的。所以在你的情况下,它会是这样的:
var ClassOfMyObject = Parse.Object.extend("ClassOfMyObject");
var myObject = ClassOfMyObject.createWithoutData("myObjectId");
// later
var user = request.user;
user.set("key", myObject);
希望这能回答你的问题。
解决方案1:(不是真正的解决方案,只是解释)
要在 Parse.com 中创建指针或关系,您必须首先将对象放置在那里。
解决方案 2:但是,您可以在 Class 中创建一个文本列并通过这些文本属性引用,而不是使用 Parse 关系。本质上,为存储为文本值的对象创建自己的 Id。
如果你决定走这条路,你需要确保你基本上有一个唯一的 ID,因为使用 Parse 很难自动递增。我自己使用这个解决方案。
function guid() {
function s4() {
return Math.floor((1 + Math.random()) * 0x10000)
.toString(16)
.substring(1);
}
return s4() + s4() + '-' + s4() + '-' + s4() + '-' +
s4() + '-' + s4() + s4() + s4();
}
var uuid = guid();
我把它放在一个有角的工厂里,用在我的 SPA 中。
使用文本字段并通过这些值引用的唯一问题是它计入查询和对它们的各种限制。如果您有关系,则无需重复查询即可返回关系。
我通常根据每个特定数据集的需要使用两者的组合。
解决方案3:
关于拥有“空对象”。是的,您可以创建一个空对象,然后用数据填充它。只要对象是在 Parse 中创建的并且具有 objectId,它就可以用于创建关系。
但请确保在创建关系之前已创建并保存关系模式中的所有对象,然后再次保存。