Моя проблема связана с запросом глубоко-слоистой базы данных реального времени в облачных функциях Firebase.
Моя структура базы данных выглядит примерно так:
{
"sellers":
{
"s0": {
"customers":
{
"c0":
{
"name":"ABC",
"email":"abc@gmail.com",
"phone":"8899889988",
"products":
{
"123":
{
"productname":"WHIRLPOOL MACHINE",
"dop":"2018-07-03",
"period":"2"
},
"456":
{
"productname":"ONIDA OVEN",
"dop":"2018-07-04",
"period":"1"
}
}
}, .....and so on
Теперь в своей облачной функции я написал фрагмент кода, чтобы получить период каждого продукта для клиента (c0), который был примерно таким:
exports.testQuery = functions.https.onRequest((req,res) => {
const dates = [];
ref.child("sellers/s0/customers/c0").once("value").then(snap => {
const childSnap = snap.val().products;
childSnap.forEach(grandSnap => {
const days = grandSnap.val().period;
dates.push(days);
});
return dates;
}).then(response => res.send(response))
.catch(error => res.send(error));
});
Когда я разверну функцию, мой ожидаемый результат должен быть:
["2", "1"]
Кажется, это не работает, хотя я думаю, что моя логика верна.
Вывод, который я получаю на веб-странице:
{}
ПОЖАЛУЙСТА, ПОМОГИТЕ!
Кроме того, нельзя forEach () использовать методы для этой операции для нескольких клиентов и, следовательно, для нескольких продавцов ?