В настоящее время я пытаюсь использовать облачные функции Firebase в своем приложении Flutter. В моем приложении я хочу получить поле документа из определенного документа, когда событие происходит с использованием машинописи. Я сделал то же самое раньше в дартс, но я не уверен, что делать при использовании машинописи. В приведенном ниже коде я пытаюсь получить поле из документа, используя метод в dart, однако в машинописи происходит сбой со следующей ошибкой:
Property 'snapshot' does not exist on type 'DocumentReference<DocumentData>'. Did you mean 'onSnapshot'?
Я упростил код до одной облачной функции с наиболее важной части, имеющие комментарии перед ними. Я пытаюсь получить поле псевдонима от personFrom documentReference.
const db = admin.firestore();
const fcm = admin.messaging();
export const sendToDevice = functions.firestore
.document('messages/{groupChatId}/{chatId}/{message}')
.onCreate(async (snapshot: { data: () => any; }) => {
const message = snapshot.data();
if (message != null) {
const querySnapshot = await db
.collection('messages')
.doc(message.idTo)
.collection('tokens')
.get();
// **** This is where I am referencing the document where I want to get its fields ****
var personFrom = db.collection('messages').doc(message.idFrom).snapshot();
const tokens = querySnapshot.docs.map((snap: { id: any; }) => snap.id);
const payload: admin.messaging.MessagingPayload = {
notification: {
// **** Right here in the title parameter is where I am attempting to retrieve a specific field of data from the document I mentioned above ****
title: "New Message from" + personFrom["nickname"]+ "!",
body: message.content,
icon: 'your-icon-url',
click_action: 'FLUTTER_NOTIFICATION_CLICK'
}
};
return fcm.sendToDevice(tokens, payload);
} else {
return undefined
}
});