Я пытаюсь создать строку запроса, поэтому ответ от Firebase возвращает только строки с соответствующим userId
(Не на верхнем уровне).
Цель состоит в том, чтобы получать заказы только для пользователя, который в данный момент вошел в систему.
Мой объект Javascript выглядит так:
const order = {
itemId: "9T9WvJBbHiQpqyWdhBO0yX7lRny1"
price: 5.3,
customer: {
userId: "-L9EyOPFB2PnyAPFUH9M",
name: "demo user",
address: "some place in earth",
}
}
В Firebase у меня есть такие правила:
{
"rules": {
"orders": {
".read": "auth != null",
".write": "auth != null",
".indexOn": ["userId"]
}
}
}
Однако это явно не работает, так как индекс указывает на верхний уровень.
Вот URL, который я создал для вызова API:
const queryParams = `?auth=${token}&orderBy="userId"&equalTo="${userId}"`;
axios
.get('/orders.json' + queryParams)
.then(res => {
// get orders for the currently logged-in user
})
.catch(err => {
console.error(err);
});
Если я подниму userId
на один уровень выше, все будет работать нормально, но клиент и аутентифицированный пользователь используют один и тот же идентификатор, поэтому я предпочитаю держать их в одном объекте.
Можно ли запрашивать данные с вложенным индексом в Firebase?
Если да, то какие правила и строку запроса следует использовать?