2014-11-14 4 views
2

Это просто. Я объект под названием obj и ссылка называется ref , когда я делаю:Как получить autoID нового объекта после вызова push() в firebase?

ref.push(obj, function(err){}); 

или

ref.push().set(obj, function(err){}); 

как получить автогенерируемая идентификатор последнего сохраненного объекта?

ответ

3

Функция push возвращает ссылку на вновь созданный объект.

var newRef = ref.push(); 
console.log(newRef.name()); 
newRef.set(obj, function(err) {}); 

Обратите внимание, что в приведенном выше фрагменте кода никакие данные не отправляются на сервер до вызова set. Метод push() является чистым на стороне клиента, если вы не передаете ему какие-либо данные.

https://www.firebase.com/docs/web/api/firebase/push.html

+0

«Уникальное имя генерируется нажатием() предваряется с клиентской сгенерированными метками времени, так что результирующий список будет хронологически отсортирован.» Означает ли это, что два клиента с разным временем устройства будут создавать хронологически несогласованный список? – webduvet

+0

Если вам нужно упорядочить клиентов, вы, вероятно, должны использовать 'Firebase.ServerValue.TIMESTAMP'. Либо установите его как приоритет, либо включите его как значение в свой объект. См. Https://www.firebase.com/docs/web/api/servervalue/timestamp.html. Одна вещь, о которой нужно помнить: при использовании нескольких клиентов эти временные метки, вероятно, не уникальны. Поэтому они отлично подходят для заказа данных, но не для использования в качестве идентификатора. –

+0

@FrankvanPuffelen Это не * совершенно * право. 'push()' является псевдонимом для генерации нового идентификатора и вызова 'set()' на нем. Вызов 'push()' без аргумента является чисто клиентской, но передача данных, таких как 'push (myObj)', будет вызывать 'set()' под капотом и записываться на сервер. Можете ли вы обновить свой ответ? –

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