Я пытаюсь обновить некоторые значения в моем облачном firestore, но поля продолжают выдавать разные ошибки в зависимости от некоторых ответов, которые я исследовал - PullRequest
0 голосов
/ 13 января 2020

Итак, я пытаюсь обновить некоторые поля в моей базе данных, используя firebase, используя функции машинописного облака. Таким образом, по-видимому, я использовал два метода на снимках экрана соответственно, в первом случае ключи, кажется, установлены в любое, а не переменная, которую я передаю variable ... во втором примере, который я использую переменная данных data variable для передачи карты, но метод также выдает ошибку данных переменной

import * as functions from 'firebase-functions';
import * as admin from 'firebase-admin';
admin.initializeApp(functions.config().firebase);
const db = admin.firestore();

export const onCreate = functions.firestore.document('Messages/{MessageId}').onCreate((snapshot, context) => {
    const newStation = snapshot.get('station');
    const newError = snapshot.get('error');
    const senderId = snapshot.get('from');
    db.collection('Tokens').get().then((snapshots) => {
        const tokens: string[] = [];
        if (snapshots.empty) {
            console.log('No Devices Connected.');
            return;
        } else {
            // for (var token in snapshots.docs) {
            //     tokens.push(token.data().devtoken);
            // }
            snapshots.forEach((token) => {
                tokens.push(token.get('devtoken'));
            });
            const payload = {
                'notification': {
                    'title': senderId,
                    'body': newStation + ' reported ' + newError,
                    'sound': 'default',
                },
                'data': {
                    'sendername': senderId,
                    'message': newStation + ' reported ' + newError,
                }
            };
            return admin.messaging().sendToDevice(tokens, payload).then((response) => { console.log('Pushed to all devices'); }).catch((e) => { console.log(e); });
        }
    }
    ).catch((e) => { console.log(e); });
    const logMessage = 'message from ' + senderId + ' for ' + newStation + ' with a ' + newError + ' was deleted';
    console.log(logMessage);
    return;
});

export const onDelete = functions.firestore.document('Messages/{MessageId}').onDelete((snapshot, context) => {
    const senderId: string = snapshot.get('from');
    const delStation: string = snapshot.get('station');
    const delError: string = snapshot.get('error');
    const path: string = senderId + '/' + delStation;
    const error: string = delError + 'Error';
    const desc: string = delError + 'Desc';
    const data = {};
    data[error] = false;
    data[desc] = '';

    // db.doc(path).update({ error: false, desc: '' }).then((value) => {
    //     console.log('Error value updated');

        db.doc(path).update(data).then((value) => {
            console.log('Error value updated');


        }).catch((e) => {
            console.log(e);
        })
        const delLogMessage = `Message from ${senderId}  for  ${delStation}  with a ${delError} was deleted`;
        console.log(delLogMessage);
        return;
    });

1 Ответ

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

я должен был упомянуть типы, что ключ и значение были бы такими:

{ [key: string]: string }

и все работало нормально

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