У меня есть следующая функция: я пытаюсь вернуть массив карт в свое приложение flutter
export const usersFromContacts = functions.region('europe-west1').https.onCall(async (data, context) => {
Authentication.authenticate(context);
const phonenumbers = Validator.validateArray<string>('phonenumbers', data['phonenumbers']);
const privateDataPromises = [];
for (let i = 0; i < phonenumbers.length; i++)
privateDataPromises.push(...(await firestore.collectionGroup('userPrivateData')
.where('phonenumber', '==', phonenumbers[i]).get()).docs);
const userSnapshots = await Promise.all(privateDataPromises);
const userPromises = [];
for (let i = 0; i < userSnapshots.length; i++) {
const userID = privateDataPromises[i].id;
userPromises.push(userCollection.doc(userID).get());
}
const returnValue = (await Promise.all(userPromises)).map((document) => UserModel.fromFirestoreDocumentData(document).toMap());
console.log(returnValue);
return returnValue;
});
Если я зарегистрирую тестовое поле в консоли облачных функций, я получаю правильный массив карт с правильными данными на картах.
[ Map {
'id' => 'ID',
'displayName' => 'Name',
'phoneNumber' => 'Phonenumber',
'photoUrl' => 'PhotoUrl' } ]
Это то, что я получаю обратно в консоли функций firebase. Где я заменил значения c.
Затем внутри флаттера я делаю
Future<HttpsCallableResult> _callCloudFunction(String functionName, {Map<String, dynamic> data}) async {
final cloudFunction = api.getHttpsCallable(functionName: functionName);
try {
final httpCallable = await cloudFunction.call(data).timeout(Duration(seconds: timeout));
print(httpCallable.data); // this prints [{}] an empty array of maps?
return httpCallable;
} on CloudFunctionsException catch (error) {
throw new UserFriendlyException(error.code, error.message);
} on TimeoutException catch (error) {
throw new UserFriendlyException('Operation Failed', error.message);
} catch (error) {
throw new UserFriendlyException('Operation Failed', 'There was a problem with with executing the operation');
}
}
И получаю пустой массив карт? Что я делаю не так?
Я почти уверен, что вызов правильный, потому что если я верну документы напрямую, я получу их в моем интерфейсе, поэтому я возвращаю значения из функции неверным способом ?