Как запросить несколько узлов по идентификатору, Firebase Realtime Database - PullRequest
0 голосов
/ 14 января 2020

Итак, у меня был объект, подобный этому, взятый из базы данных Firebase в реальном времени

  "3e97a0918fc5429ca470e017a9ff0b04": {
    "bearing": 0,
    "latitude": "19.9737038",
    "longitude": "73.7897944",
    "timestamp": "1557027317083",
    "trip": "3e97a0918fc5429ca470e017a9ff0b04",
    "user": "1346"
  },
  "43efa340444d454cb2673b9afd95c810": {
    "bearing": 329,
    "latitude": "20.1597784",
    "longitude": "73.8792233",
    "timestamp": "1554784486880",
    "trip": "43efa340444d454cb2673b9afd95c810",
    "user": "1339"
  },
  "4d1118279bd14597a59feaf883c1a1a4": {
    "bearing": 227,
    "latitude": "20.1588567",
    "longitude": "73.8851554",
    "timestamp": "1554681994097",
    "trip": "4d1118279bd14597a59feaf883c1a1a4",
    "user": "1467"
  },
  "4e28d129df8d4e399e094fd85f9891a0": {
    "bearing": 0,
    "latitude": "20.1450097",
    "longitude": "73.8935804",
    "timestamp": "1554940195655",
    "trip": "4e28d129df8d4e399e094fd85f9891a0",
    "user": "1488"
  },
  "584427ae15f240c896c13058e41a69b5": {
    "bearing": 177,
    "latitude": "20.1595356",
    "longitude": "73.8792819",
    "timestamp": "1554521339710",
    "trip": "584427ae15f240c896c13058e41a69b5",
    "user": "1316"
  },
  "5a4c13ed54584541b5da1fe6dc4d4405": {
    "bearing": 0,
    "latitude": "20.1597879",
    "longitude": "73.8792057",
    "timestamp": "1554523562777",
    "trip": "5a4c13ed54584541b5da1fe6dc4d4405",
    "user": "1511"
  },
}

Но я хочу отслеживать только поездки с определенным IDS. Мой вопрос заключается в том, как ограничить узлы путем предоставления определенных идентификаторов?

Допустим, я хотел только поездки с идентификаторами

3e97a0918fc5429ca470e017a9ff0b04 43efa340444d454cb2673b9afd95c810

Я пытался использовать equalTo метод, но который возвращает одну поездку. И я также попытался использовать orderByChild ("trip"), но это тоже не помогает, так как поездки являются uuids.

Ответы [ 2 ]

0 голосов
/ 14 января 2020

Вы пишете в своем вопросе, что хотите "на отслеживать поездки". Если вы хотите объявить прослушиватель только для определенного списка узлов базы данных (например, trips), чтобы прослушать их изменения (т.е. "отслеживать" их), вам необходимо вызвать on()* 1006. * метод для каждого узла.

Что-то вроде следующего поможет:

  var database = firebase.database();
  var idsToListenTo = ["3e97a0918fc5429ca470e017a9ff0b04", "3e97a0918fc5429ca470e017a9ff0b04"];

  idsToListenTo.forEach(id => {
        database.ref(id).on('value', snapshot => {
            console.log("trip " + snapshot.key + " has just changed");
            console.log(snapshot.val());
        });
    }
  );
0 голосов
/ 14 января 2020

Вы не можете использовать and запрос в базе данных Firebase. Если вы хотите получить данные в соответствии с id, то вы можете использовать метод equalTo(), который будет извлекать в соответствии с одним идентификатором. Если вам нужно несколько идентификаторов, вам нужно будет создать атрибут, который будет содержать идентификаторы, по которым вы хотите выполнить запрос. Например:

  "584427ae15f240c896c13058e41a69b5": {
    "bearing": 177,
    "latitude": "20.1595356",
    "longitude": "73.8792819",
    "timestamp": "1554521339710",
    "trip": "584427ae15f240c896c13058e41a69b5",
    "user": "1316",
    "ids": "584427ae15f240c896c13058e41a69b5_3e97a0918fc5429ca470e017a9ff0b04"
  },

Тогда вы можете использовать equalTo() для ребенка ids.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...