#firebase #flutter #dart #google-cloud-firestore #google-cloud-functions
#firebase #flutter #dart #google-cloud-firestore #google-cloud-функции
Вопрос:
У меня есть облачная функция, которая содержит, среди прочего, эти три строки:
const admin = require("firebase-admin");
const db = admin.firestore();
db.doc(path);
Я широко использую эти три строки во всей функции для взаимодействия с firestore. Они даже сохраняют ссылки на документы как таковые в firestore. Однако я не могу заставить их вернуть ссылку на документ во внешний интерфейс Flutter.
Переменная, назовем ее yourReference
, сохраняется в firestore в одной строке, отображается как documentReference
, а в следующей строке возвращается во внешний интерфейс Flutter следующим образом:
response.json({
referenceItem: yourReference,
});
И все же интерфейс получает не экземпляр ссылки на документ, а карту с ключами, связанными со ссылкой на документ! Т. е. {_path:..., _firestore:...}
и т.д. Пожалуйста, обратите внимание, что интерфейс Flutter отправляет post-запрос в облачную функцию, а не использует библиотеку облачных функций для Flutter.
Комментарии:
1. Вы на самом деле просто пытаетесь вернуть ссылку на документ клиенту или пытаетесь вернуть фактические данные документа? Из того, что у вас есть сейчас, неясно. Пожалуйста, отредактируйте вопрос, чтобы показать весь код функции, а также код Flutter, который вы используете для ее вызова. Если ваш код не работает или содержит ошибки, вы должны точно описать, что работает не так, как вы ожидаете.
Ответ №1:
DocumentReference
— это просто ссылка на документ в базе данных. В вашем первом фрагменте ссылка не намного больше path
. Итак, если вы хотите вернуть путь к документу пользователю Flutter, вы должны вернуть path
, а не DocumentReference
.
Если вы хотите вернуть пользователю фактическое содержимое документа, вам сначала нужно прочитать этот документ с помощью чего-то вроде:
let doc = await db.doc(path).get();
console.log(doc.data());
doc.data()
В этом фрагменте представлены данные из документа, которые затем вы захотите вернуть в приложение Flutter. Как это сделать, зависит от типа облачной функции, которую вы используете, но с функцией HTTPS это было бы что-то вроде.
res.write(doc.data());
Комментарии:
1. Спасибо, Puf! Тогда я просто верну путь в виде строки! 🙂