Параметр result неявно имеет любой тип - PullRequest
1 голос
/ 24 октября 2019

enter image description here У меня есть приложение чата, в котором я пытаюсь отправить уведомления всем подписчикам. Я должен перебирать пользователей, чтобы использовать идентификаторы в предложении where для получения их токенов устройства

import * as functions from 'firebase-functions';

import * as admin from 'firebase-admin';

admin.initializeApp();

exports.newTopicNotification = functions.firestore
    .document('topics/{id}/topic/{doc}/chat/{chat}')
    .onWrite( async event => {
        const allMessages = event.after.data();
        const db = admin.firestore();
        let data: any;

        if (allMessages) { data = allMessages; }
        const title = data ? data.title : '';
        const topicId = data ? data.topicId : '';
        const groupId = data ? data.groupId : '';

        console.log('incomingData', data);

        const payload = {
            notification: {
                title: 'New group topic post',
                body: `${title}`
            }
        };

        let users: any = [];
        let devices: any = [];
        const tokens: any = [];

        users = await db.collection('topics')
                            .doc(`${groupId}`)
                            .collection('topic')
                            .doc(`${topicId}`)
                            .get();

        console.log('users', users.data().subscribers);

        for (let i = 0; i < users.data().subscribers.length; i++) {
            const devicesRef = db.collection('devices').where('userId', '==', users.data().subscribers[i]);
            const device = await devicesRef.get();
            devices.push(device);
            console.log('device', devices);
        }

// here the result keeps showing the error 
        devices.forEach(result => {
            const token = result.data().token;
            tokens.push(token);
          });
        return admin.messaging().sendToDevice(tokens, payload);
    });

Не знаю, почему в результате возникла такая ошибка, но в результате она не позволяет мне загружать в облачные функции. Любая помощь будет принята с благодарностью.

1 Ответ

2 голосов
/ 24 октября 2019

Похоже, что это может быть проблемой tslint. Вам может потребоваться объявить тип как «любой», не допускается неявно. Это должно быть явно.

Попробуйте это:

devices.forEach((result: any) => {
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...