Я хотел бы получить все экземпляры, где targetUser — Джонни .

Firebase

Проблема в том, что Firebase не позволяет мне иметь .child () как ноль .

Как я могу это сделать?

Это была моя попытка —

readTargetUser = () ={amp}gt; { allHistory = []; let myHistory = firebase .database() .ref("/locations") .child() .child("targetUser" === "Johnny") .limitToLast(5); myHistory.on("value", snapshot ={amp}gt; { console.log( "Here I can see all info where the targetUser is Johnny", snapshot ); }); }; 

Вы ищете запрос, который в Firebase делается с:

  let myHistory = firebase .database() .ref("/locations") .child("GG99AaPQjMhr0kT1xFkazjHMUrm1") .orderByChild("targetUser") .equalTo("Johnny") .limitToLast(5); 

Подробнее об этом см. Документацию Firebase по упорядочению и фильтрации данных .


Если вы не знаете узел GG99AaPQjMhr0kT1xFkazjHMUrm1 , нет способа упорядочить / отфильтровать свойство targetUser , поскольку запросы к базе данных Firebase могут упорядочивать только свойства, которые находятся по известному пути под каждым дочерним targetUser .

Смотрите мой ответ здесь: Firebase Query Double Nested

Типичным решением в этом случае является создание так называемого инвертированного индекса в вашей базе данных, исключительно для этого варианта использования. Это выглядит примерно так:

 targetUsers: { "Johnny": { "GG99AaPQjMhr0kT1xFkazjHMUrm1_1577194136959": true, ".../...": true } }