2013-03-20 78 views
1

我想在添加子對象時編輯父對象的優先級。 我正在使用PHP和REST API並使用POST添加新的子項。通過REST編輯Firebase優先級

但似乎.priority設置只能使用PUT來重置父對象。

我已閱讀此帖子和回答: Push to Firebase via REST API with Priority 但它適用於設置新對象的優先級。

然後我嘗試檢索父對象的內容並使用.value 重置它,但這對我不起作用 - 可能是因爲被推入的對象與其自己的子對象相比是複雜的。

那麼有可能,或將來有可能推出新的.priority設置?

回答

0

簡單的答案是,您可以直接通過將.priority附加到URL的末尾來設置優先級。即:

curl https://SampleChat.firebaseIO-demo.com/users/tom/.priority/.json 

如果您希望在寫入其他數據的同時設置優先級,那麼也可以這樣做。請參閱the docs中的REST API編寫優先級。

請注意,只能將優先級寫入已包含數據的位置。如果您嘗試將優先級寫入空位置,則優先級將被忽略,並且REST調用將返回空值。

沒有命令會同時推送一個對象並更新父對象的優先級(我很難爲此提供一個很好的用例 - 如果您有任何想法,請留下評論) 。

+0

我確實有推送對象和更新父級的優先級的情況,但我沒有問題,這是一個兩步過程。 我有一個消息系統,我希望最近評論的消息首先列出,所以當一個評論(子對象)被推,我想更新父母的優先級,所以它移動到頂部。 但這不是我認爲你應該擔心的事情,如果我能分兩步來完成。 – SarahR 2013-03-20 23:36:28

0

迴應安德魯作爲另一個答案,這樣我可以格式化代碼:

你的建議會得到我現有的優先權,但我仍然沒有看到如何更改優先級的命令。我使用PHP和這裏是我曾嘗試:

$url = $urlToParent . '/.priority/.json'; 
$fields = '{ ".priority" : ' . $timeStamp . ' }'; 
$result = doSend($url, $fields, 'PUT'); 

$url = $urlToParent . '/.priority/.json'; 
$fields = '{ ' . $timeStamp . ' }'; 
$result = doSend($url, $fields, 'PUT'); 

$url = $urlToParent . '/.json'; 
$fields = '{ ".priority" : ' . $timeStamp . ' }'; 
$result = doSend($url, $fields, 'POST'); 

doSend()是使用POST或PUT發送數據的PHP函數。

這些不同的嘗試要麼刪除整個對象,要麼刪除優先級設置,要麼返回錯誤。我確信必須有一種方法來做我想做的事情,我只是沒有選擇合適的URL,參數和發送方法。

+0

它看起來像我想要設置對象的優先級。優先級只能是數字或字符串。在第二個選項中刪除時間戳中的大括號。 我會用等價的PUT命令更新下面的答案。 – 2013-03-21 03:01:16

+0

嗯......實際上這裏可能有一個bug。我正在調查,並會在我們確診時更新。 – 2013-03-21 03:05:27

+0

謝謝安德魯。一如既往地讚賞您的大力支持。 – SarahR 2013-03-22 00:56:32