2013-03-20 43 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