Я объединил три Наблюдаемых через 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
}