Как вы получаете documentSnapshot из firestore через облачную функцию во флаттере? - PullRequest
0 голосов
/ 24 января 2020

сначала немного вступления, мне нужно получить documentSnapshot, а не только данные записи, которая находится в Firestore, потому что в моем приложении есть нумерация страниц, и для этого, когда вы запрашиваете, вам нужно отправить последний documentSnapshot откуда ваш запрос отправит 10 следующих записей.

Итак, это работало нормально с SDK, но я хочу реализовать облачные функции сейчас, и когда я пытаюсь ответить documentSnapshot из облачной функции, я не удалось получить documentSnapshot во Flutter.

Это часть кода, в которой проблема:

final function = _cloudFunctions.getHttpsCallable(
  functionName: 'createRecord',
);
try {
  final response = await function.call(data);
  final DocumentSnapshot doc = response.data;
  return doc;
} catch (e) {
  print(e)
  return null;
}

С этим кодом я получаю сообщение об ошибке: тип "_InternalLinkedHashMap" не является подтип типа 'DocumentSnapshot'

Есть ли обходной путь или я что-то не так делаю?

1 Ответ

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

Ответ от вызываемой облачной функции не будет строго типизированным DocumentSnapshot . Вот что сообщение об ошибке пытается вам сказать. Вы получаете объект типа карты, и вам приходится иметь дело с этим объектом как таковым. Вы не можете просто заставить его быть DocumentSnapshot.

Если вы используете вызываемую функцию в качестве инструмента для разбивки на страницы, вы не сможете передавать объекты DocumentSnapshot назад и вперед между клиентом и функцией. , Вам нужно будет передать этой функции достаточно информации для разбивки на страницы без предоставления DocumentSnapshot.

На самом деле DocumentSnapshot не требуется для разбивки на страницы - вам нужна достаточно информации, чтобы запрос мог указать, где он находится остановлено, как показано в документации . Это включает использование startAt или startAfter с использованием информации из последнего увиденного документа.

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