通过REST编辑Firebase优先级

通过REST编辑Firebase优先级,rest,firebase,Rest,Firebase,我想在添加子对象时编辑父对象的优先级。 我正在使用PHP和RESTAPI,并使用POST添加新的子对象 但是,似乎只能使用重置父对象的PUT来设置.priority 我读了这篇文章并回答: 但它适用于为新对象设置优先级 然后我尝试检索父对象的内容并使用.value重置它 但这对我不起作用——可能是因为被推送的对象是一个复杂的对象,它有自己的子对象 那么,是否有可能,或者将来是否有可能推送一个新的.priority设置?简单的答案是,您可以直接通过在URL末尾附加.priority来设置优先级。即

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

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

我读了这篇文章并回答: 但它适用于为新对象设置优先级

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


那么,是否有可能,或者将来是否有可能推送一个新的.priority设置?

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

curl https://SampleChat.firebaseIO-demo.com/users/tom/.priority/.json
如果希望在写入其他数据的同时设置优先级,也可以这样做。请参阅中的从REST API编写优先级

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

没有一个命令可以同时推送对象和更新父对象的优先级。我很难想出一个好的用例,如果您有什么想法,请留下评论。

回复Andrew作为另一个答案,以便我可以格式化代码:

您建议的命令将为我获取现有优先级,但我仍然不知道如何更改优先级。我正在使用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是一个PHP函数,它使用POST或PUT发送数据


这些不同的尝试要么删除整个对象,要么删除优先级设置,要么返回错误。我确信一定有办法做到我想要的,我只是没有找到URL、参数和发送方法的正确组合。

我确实有理由推送一个对象并更新父对象的优先级,但这是一个分两步的过程,我没有问题。我有一个消息传递系统,我想先列出最近对消息发表的评论,所以当推送注释子对象时,我想更新父对象的优先级,使其移到顶部。但如果我能分两步完成,我想你不必担心这件事。在我看来,你似乎在试图为一个对象设置优先级。优先级只能是数字或字符串。在第二个选项中去掉时间戳周围的大括号。我将用等效的PUT命令更新下面的答案。嗯。。。实际上这里可能有个bug。我正在调查,当我们有诊断时会更新。谢谢安德鲁。我们将一如既往地感谢您的大力支持。乐于助人!我还没有找到它,但我很快就会找到。事实上,这里的问题可能是你在一个不存在的地方写信。只有当服务器上已经存在数据时,才能写入优先级-否则将忽略它!我将更新下面的答案。