Получить дочерний объект, хранящийся в Firebase, используя Javascript - PullRequest
0 голосов
/ 12 декабря 2018

У меня есть коллекция простых объектов Java (токенов устройств с устройства Android), хранящихся в виде документов в Firebase:

public class DeviceToken {
    String tokenID;


    public DeviceToken() {
    }

    public DeviceToken(String tokenID) {
        this.tokenID = tokenID;
    }


    public String getTokenID() {
        return tokenID;
    }

    public void setTokenID(String tokenID) {
        this.tokenID = tokenID;
    }
}

I enter image description here

Я пытаюсь получить дочерний объект tokenID этого объекта в виде строки в javascript для следующей облачной функции:

exports.sendDMNotification = functions.firestore.document('/dm_threads/{thread_id}/messages/{message_id}')
    .onCreate((snapshot, context) => {


        const newMessage = snapshot.data();

        const senderName = newMessage.authorName;
        const senderID = newMessage.authorUID;
        const messageText = newMessage.message;
        const recipientName = newMessage.recipientName;
        const recipientID = newMessage.recipientUID;
        const timestamp = newMessage.timestamp;


        let deviceTokenQuery = admin.firestore().collection(`/users/${recipientID}/device_tokens/`);

        return deviceTokenQuery.get().then(querySnapshot => {

            let tokenShapshot = querySnapshot.docs;

            const notificationPromises = tokenShapshot.map(token => {


                let token_id = token['tokenID'];

                console.log(token_id);
                console.log(token)
                console.log(JSON.stringify(token));


                const payload = {
                    notification: {
                        title: senderName,
                        body: messageText,
                        icon: "default"
                    }
                };


                return admin.messaging().sendToDevice(token_id, payload)

            });

            return Promise.all(notificationPromises);

        });

    });

Первый оператор журнала возвращает неопределенное значение, второй возвращает [объектный объект] и третийвозвращает то, что кажется набором метаданных, ссылкой на документ, но ни одним из свойств объекта, как я его использую.Как мне просто извлечь этого tokenID потомка объектных документов, которые я получаю?

1 Ответ

0 голосов
/ 12 декабря 2018

Поскольку вы используете позывной map на querySnapshot.docs, я предполагаю, что каждый элемент, переданный обратному вызову map, является документом.В этом случае вам все равно нужно позвонить data(), чтобы получить данные документов:

let tokenShapshot = querySnapshot.docs;

const notificationPromises = tokenShapshot.map(doc => {

    let token_id = doc.data().tokenID;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...