2015-10-16 35 views
0

是否可以在對象中保存「空」對象以保存引用而不必先取得完整對象?將「沒有數據的對象」指針保存在Parse Cloud代碼中

我這樣做:

var myObject = new MyObject(); 
myObject.id = "id I retrieved somewhere on my client device" 

// later 
var user = request.user; 
user.set("key", myObject); 

但它不工作,它在說「不能創建一個指向未保存的parseObject」

+0

爲什麼這樣做?如果您希望從用戶指向的子對象在服務器上還不存在,那麼只需在user.key中將屬性設置爲「未定義」,即在創建MyObject的雲代碼中,考慮'之前','事件之後'掛鉤並更新user.key –

+0

實際上,該對象存在於服務器上,但我只有它的id(作爲參數傳遞給我的雲功能)。 –

+0

查詢ID然後添加指針OR ..如果obj存在,並且您希望在不引用實際對象(僅限ID)的情況下創建指向它的新指針,則可以通過將AJAX請求與以下Curl REST示例創建一個指針.... POST -d'{$ {「Column」:{「__ op」:「AddRelation」,「objects」:[{「__ type」:「指針」,「className」:「$ Class」, 「objectId」:「$ ID」}]}}' https://api.parse.com/1/classes/$class –

回答

0

解決方案1:(不是一個真正的解決方案,只需解釋)

要在Parse.com中創建指針或關係,您必須首先有一個對象放置在那裏。

解決方案2: 但是,您可以在您的Class中創建一個文本列,並通過這些文本屬性進行引用,而不是使用Parse關係。基本上,爲該對象創建自己的ID作爲文本值存儲。

如果你決定走這條路線,你需要確保你有一個唯一的Id,因爲使用Parse很難自動增加。我自己使用這個解決方案。

Create GUID/UUID in JavaScript?

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,它就可以用來創建關係。

但是請確保關係模式中的所有對象都已經在創建關係之前創建並保存,然後再次保存。

2

我認爲createWithoutData方法就是你要找的。所以在你的情況下,它會是這樣的:

var ClassOfMyObject = Parse.Object.extend("ClassOfMyObject"); 
var myObject = ClassOfMyObject.createWithoutData("myObjectId"); 

// later 
var user = request.user; 
user.set("key", myObject); 

希望這回答你的問題。

相關問題