我想在添加子对象时编辑父对象的优先级。 我正在使用PHP和REST API并使用POST添加新的孩子。
但似乎只能使用重置父对象的PUT来设置.priority设置。
我已阅读此帖并回答: Push to Firebase via REST API with Priority 但它适用于为新对象设置优先级。
然后我尝试检索父对象的内容并使用.value重置它 但这对我不起作用 - 可能是因为被推送的对象是一个复杂的对象,它有自己的子对象。
有可能,或将来有可能推出新的.priority设置吗?
答案 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,参数和发送方法组合。