Облачные функции .onCall () не может вернуть данные - PullRequest
0 голосов
/ 03 апреля 2020

Я объединил три Наблюдаемых через pipe(), а затем я преобразовал его в Обещание, чтобы я мог его вернуть. Я проверил вызов с onRequest(), и он работает просто отлично. Однако с onCall() я продолжаю получать эту ошибку:

Ошибка Domain = NSCocoaErrorDomain Code = 3840 "JSON текст не начинался с массива или объекта и опции, позволяющей не устанавливать фрагменты." UserInfo = {NSDebugDescription = JSON текст не начинался с массива или объекта и опции, позволяющей не устанавливать фрагменты.}

Я много чего пробовал, но все они возвращают одну и ту же ошибку. Я что-то здесь не так делаю?

export const getNotifications = functions.region('europe-west1').https.onCall((data, context) => {

    const notificationsObs = rxjs.from(db.collection('notifications').where('receiverID', '==', 'jmwJLofoKpaQ4jligJKPc24UEe72').get());
    const requestObs = (requestsRef: any) => rxjs.from(db.getAll(...requestsRef));
    const packageObs = (packagesRef: any) => rxjs.from(db.getAll(...packagesRef));

    const notifications: Notification[] = [];
     return notificationsObs.pipe(
        mergeMap(snapshot => {
            //
            return requestObs(requestsRef);
        }),
        mergeMap((requests) => { // kthen requests
            //
            return packageObs(packagesRef)
        })
    ).toPromise().then(() => {
        return { notifications: "test" };
    }).catch(err => {err})
});

Swift

functions.httpsCallable("getNotifications").call() { (result, error) in
    if let error = error as NSError? {
        print(error)
    }

    print(result?.data) // nil
}

1 Ответ

0 голосов
/ 04 апреля 2020

Так что onCall() почему-то не поддерживается в europe-west1. Я удалил регион, и он отлично работает.

...