通过REST编辑Firebase优先级

时间:2013-03-20 01:29:41

标签: rest firebase

我想在添加子对象时编辑父对象的优先级。 我正在使用PHP和REST API并使用POST添加新的孩子。

但似乎只能使用重置父对象的PUT来设置.priority设置。

我已阅读此帖并回答: Push to Firebase via REST API with Priority 但它适用于为新对象设置优先级。

然后我尝试检索父对象的内容并使用.value重置它 但这对我不起作用 - 可能是因为被推送的对象是一个复杂的对象,它有自己的子对象。

有可能,或将来有可能推出新的.priority设置吗?

2 个答案:

答案 0 :(得分:0)

简单的答案是,您可以通过将.priority附加到网址末尾来直接设置优先级。即:

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

如果要在写入其他数据的同时设置优先级,也可以这样做。请参阅the docs中的REST API编写优先级。

请注意,优先级只能写入已包含数据的位置。如果尝试将优先级写入空位置,则优先级将被忽略,REST调用将返回null。

没有命令会同时推送对象并更新父级的优先级(我很难为此提出一个好的用例 - 如果你有一些想法,请留下评论)。

答案 1 :(得分: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,参数和发送方法组合。