Функции Firebase получают список имен ключей - PullRequest
0 голосов
/ 23 января 2019

Я новичок в Nodejs и пытаюсь сделать это в течение 2 дней.Я хочу получить список имен ключей (которые являются идентификатором пользователя, которому понравился этот пользователь), хранящихся под конкретным узлом.Но мой код не идет дальше, чем этот журнал: "getting key names for user: NRtRoPEh4HUYUc0Hz6unMCsTBSn1"

Тогда тайм-ауты моего кода с этим журналом: Function execution took 60002 ms, finished with status: 'timeout'

Мой код:

const functions = require('firebase-functions');

const admin = require('firebase-admin');

const serviceAccount = require('./service-account.json');
admin.initializeApp({
    credential: admin.credential.cert(serviceAccount),
    databaseURL: 'MY-URL',
});

var events = require('events');

exports.getLikedUsers = functions.database.ref('/users_to_test/{pushID}').onCreate(snapshot => {
    let UID = snapshot.val();
    let likeList = new Array();
        console.log('getting key names for user: ', UID);


        return admin.database().ref(`/user_likes/${UID}/{likedUser}`)
            .once('child_added').then(snap =>
            {          
                snap.forEach((childSnap) =>{
                    likeList.push(childsnap.key);
                });

                console.log('liked users list: ' + likeList.entries());

                return;

            }).then(function (functionReturn)    
        {
        return;
        });
    });
`


1 Ответ

0 голосов
/ 23 января 2019

Ваш запрос не возвращает результатов и ожидает в течение неопределенного времени, пока 'child_added' не сработает, чтобы любой результат стал доступным.Это приводит к истечению времени ожидания вашей функции.

Здесь две вещи неправильны:

  1. Этот рефр почти наверняка не тот, который вы хотите: "/user_likes/${UID}/{likedUser}" Вывставили туда одну переменную ($ {UID}) и ту, которая выглядит как вставка переменной, но на самом деле это не так ({likesUser}).Вы буквально ищете дочерний узел с именем "{likesUser}".Я полагаю, что это не то, что вам нужно.

  2. Запросы "child_added" на самом деле не имеют смысла в облачных функциях.Вы не когда-либо хотите выполнять запрос, который ждет результата бесконечно долго.Вы почти всегда хотите использовать событие «value», чтобы получить некоторые данные о местоположении, или ничего, если это местоположение не существует, поэтому ваша функция может двигаться дальше и быстро делать следующее.

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