2013-03-20 3 views
1

Я хочу изменить приоритет родительского объекта при добавлении дочернего объекта. Я использую PHP и API REST и добавляю новый ребенок с помощью POST.Редактирование приоритета Firebase с помощью REST

Но, кажется, что параметр .priority может быть выполнен только с помощью PUT, который сбрасывает родительский объект.

Я прочитал этот пост и ответ: Push to Firebase via REST API with Priority , но он применяется к приоритету установки для новых объектов.

Затем я попытался восстановить содержимое родительского объекта и сбросить его с использованием .value , но это не работает для меня - возможно, потому, что объект, который был нажат, является сложным с дочерними объектами его собственного.

Возможно ли это, или это будет возможно в будущем PUSH установить новую настройку приоритета?

ответ

0

Простой ответ заключается в том, что вы устанавливаете приоритет напрямую, добавляя .priority в конец вашего URL-адреса. то есть:

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

Если вы хотите установить приоритет одновременно с записью других данных, вы также можете это сделать. См. «Написание приоритетов» в REST API в the docs.

Обратите внимание, что приоритеты могут быть записаны только в местоположения, которые уже содержат данные. Если вы попытаетесь записать приоритет в нулевое местоположение, приоритет будет проигнорирован, и вызов REST вернет значение null.

Нет команды, которая будет одновременно выталкивать объект и обновлять приоритет родителя одновременно (у меня возникают проблемы с хорошим вариантом использования для этого - оставьте комментарий, если у вас есть что-то в виду) ,

+0

У меня есть случай для толкания объекта и обновления приоритета родителя, но у меня нет проблем с тем, что это двухэтапный процесс. У меня есть система обмена сообщениями, и я хочу, чтобы недавно прокомментированные сообщения отображались в списке, поэтому, когда текст комментария (дочерний объект) нажат, я хочу обновить приоритет родителя, чтобы он переместился в начало. Но это не то, о чем я думаю, вам следует беспокоиться о том, смогу ли я сделать это за 2 шага. – SarahR

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() является функцией PHP, которая использует POST или PUT для передачи данных.

Эти различные попытки либо удаляют весь объект, удаляют настройку приоритета, либо возвращают ошибку. Я уверен, что должен быть способ сделать то, что я хочу, я просто не попал в правильную комбинацию URL, параметров и метода отправки.

+0

Мне кажется, что вы пытаетесь установить приоритет для объекта. Приоритетами могут быть только цифры или строки. Чтобы отключить эти фигурные скобки вокруг метки времени во втором варианте. Я обновляю ответ ниже с помощью эквивалентной команды PUT. –

+0

Хм ... на самом деле может быть ошибка здесь. Я исследую и обновляю, когда у нас есть диагноз. –

+0

Спасибо, Андрей. Ваша большая поддержка ценится, как всегда. – SarahR

Смежные вопросы