Выполнение составного запроса Firestore в облачных функциях - PullRequest
0 голосов
/ 21 января 2020

Я пишу несколько триггеров, которые работают на базе данных пожарного магазина фильмов и пользователей. в этом триггере «я пытаюсь показать новому пользователю фильмы с самым высоким рейтингом в списке жанров, которые он выбрал. для этого у меня есть массив его любимых жанров, и я хочу запросить базу данных внутри foreach l oop:

import * as functions from 'firebase-functions';
import { __values } from "tslib";
import * as admin from 'firebase-admin'; 


admin.initializeApp();
const films = admin.firestore().collection("Films");

export const new_user_recommend = functions.firestore
    .document('/Users/{email}')
    .onCreate((snap, context) => {
        const new_user = snap.data();
        if(new_user){
            const new_email = new_user.email;
            const favourite_genres = new_user.favourite_genres;
            let film_id_arr: string[] = new Array();

            favourite_genres.forEach((genre: string) => {
                films.where('genres', 'array-contains', genre).orderBy('avg_rating', 'desc').limit(5).get()
                .then((list_book: any)=>{
                    list_book.forEach((element: any) => {
                        const film_element = JSON.parse(element.data());
                        film_id_arr.push(film_element.data().id);           
                    });
                    return film_id_arr;
                })
                .catch((error: any)=>{
                    console.log(error);
                    console.log("Error loading films");
                });                
            });
        } 
        return 0;            
    });

проблема в том, что я всегда получаю сообщение об ошибке в предложении catch (так для каждого жанра в массиве я получаю сообщение об ошибке). Я дважды проверил, чтобы убедиться, что строки в массиве совпадают со строками, которые могут быть записаны в поле «жанры» для каждого документа фильма. Это привело меня к мысли, что мой запрос как-то неверен. Это тот случай?

Я редактирую, чтобы добавить некоторые важные детали. точная ошибка, которую я получаю: «Не удалось загрузить учетные данные по умолчанию». Значит, это указывает на проблему с аутентификацией пользователя, а не на сам запрос?

1 Ответ

1 голос
/ 21 января 2020

После быстрого поиска кажется, что ваша проблема в том, что вы используете firebase-admin без предоставления действительных учетных данных website .

По крайней мере, это так, судя по коду ошибки.

Учетные данные для развернутых функций необходимы только для firebase-admin, но не для firebase-функций.

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