Предполагая, что у вас есть только переменные, а не какие-либо функции в вашем объекте, вы можете просто использовать:
var newObject = JSON.parse(JSON.stringify(oldObject));
Попробуйте следующее:
var ref = firebase.database().ref("restaurantes/history");
ref.child(userUID).once("value", function(snapshot) {
if (snapshot.exists()) {
console.log(snapshot.val());
}
else {
console.log("different user");
});
Это проверит, существует ли моментальный снимок, который содержит userId
(добавленный в качестве параметра в методе child()
), в базе данных, тогда вы будете возможность получить данные в соответствии с userId
.
Справочно:
https://firebase.google.com/docs/reference/js/firebase.database.DataSnapshot#exists
Ответ Петра - правильное решение. Я просто добавляю это для полноты.
Когда вы вызываете orderBy...
для ссылки Firebase, база данных упорядочивает все дочерние узлы по указанному вами ключу / значению / дочернему элементу.
Если вы впоследствии вызовете startAt(...)
для запроса, он находит (первый) узел, который начинается с этого значения, и начинает , возвращая все результаты оттуда. Поэтому, если вы начнете с FKQLlqa
, он начнет возвращать ключи с FKQLlqa
, а затем вернет все ключи после него.
Если вы хотите вернуть дочерний узел (узлы) с определенным ключом / значением / потомком, вы должны использовать equalTo(...)
. Итак:
ref.orderByKey().equalTo(userUID).once("child_added", function(snapshot) {
...
Но, как уже сказал Питер, это просто более дорогой способ найти ребенка с известным ключом. Я настоятельно рекомендую использовать его лучший подход: ref.child(userUID).once("value"
.