Функции Firebase, как получить логическое значение из базы данных Firebase

У меня есть код в node.js в функциях Firebase, и я просто хочу знать, как получить логическое значение переменной, «прочитанной» внутри каждого пользователя в классе «Пользователи».

Мой код:

let functions = require('firebase-functions');

let admin = require('firebase-admin');

admin.initializeApp();

exports.sendNotificationNewChat = functions.database.ref('/Usuarios/{usuarioId}/Chats/{chatsId}').onWrite((change, context) => {

    //get the userId of the person receiving the notification because we need to get their token
//const receiverId = context.params.userId;
//console.info("receiverId: ", receiverId);
/*
    // Only edit data when it is first created.
      if (change.before.exists()) {
        return null;
      }*/
      // Exit when the data is deleted.
      if (!change.after.exists()) {
        return null;
      }

    if (!change.after.exists()) {
        return null;
    }
    //te escribe el json de el mensaje nuevo
    const afterData = change.after.val();
    console.info("afterData: ", afterData);

  //  const readChat = afterData.read;
   // console.info("readChat: ", readChat);


//get the user id of the person who sent the message
    const senderId = context.params.usuarioId;
    console.info("senderId: ", senderId);

//get the user id of the person who sent the message
    const receiverId = afterData.IdOtherUser;
    console.info("receiverId: ", receiverId);


//get the message
    const nameAd = afterData.nameAd;
    console.info("nameAd: ", nameAd);


//get the message
    const ChatId = context.params.chatsId;
    console.info("ChatId: ", ChatId);

    /*
    //get the message id. We'll be sending this in the payload
    const messageId = context.params.messageId;
    console.info("messageId: ", messageId);
    */
    return admin.database().ref("/Usuarios/"+senderId+"/Chats/"+ChatId).once('value').then(snap => {
        const readChat = snap.child("read").val();
       // if (readChat) return null
        console.info("readChat: ", readChat);



//query the users node and get the name of the user who sent the message
    return admin.database().ref("/Usuarios/" + senderId).once('value').then(snap => {
        const senderName = snap.child("name").val();
        console.info("senderName: ", senderName);

//get the token of the user receiving the message
        return admin.database().ref("/Usuarios/" + receiverId).once('value').then(snap => {

            const receiverName = snap.child("name").val();
            console.info("receiverName: ", receiverName);

            const token = snap.child("token").val();
            console.info("token: ", token);

//we have everything we need
//Build the message payload and send the message
            console.info("Construction the notification message.");
            const payload = {
                data: {
                    data_type: "direct_message",
                    title: "Nueva conversación de " + senderName,
                    message: "Selecciona para ver los mensajes",
                }
            };

            return admin.messaging().sendToDevice(token, payload)
                .then(function(response) {
                    return console.info("Successfully sent message:", response);
                })
                .catch(function(error) {
                    return console.info("Error sending message:", error);
                });
        });
    });
});
});

Я использую эту часть кода, чтобы получить значение чтения, но всегда записи функции firebase говорят мне, что она получает нулевое значение
Часть кода для получения логического значения из "чтения":

admin.database().ref("/Usuarios/"+senderId+"/Chats/"+ChatId).once('value').then(snap => {
            const readChat = snap.child("read").val();
           // if (readChat) return null
            console.info("readChat: ", readChat);

Функции Firebase, как получить логическое значение из базы данных Firebase

Не могли бы вы добавить точную структуру вашей базы данных и, если возможно, экспорт данных (используйте кнопку с тремя точками в правом верхнем углу консоли Firebase, когда вы находитесь в модуле RTDB)

Renaud Tarnec 03.09.2018 17:28
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
1
973
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

snap.val () вернет объект, чтобы вы могли объект и сохранить его в переменной и попытаться получить к нему доступ или иным образом попробуйте, как показано ниже

admin.database().ref("/Usuarios/"+senderId+"/Chats/"+ChatId).once('value')           
.then(snap => {              
        if (snap.numChildren() === 0) // check for no data available              
        snap.child("read").val(); // instead of this line write like below
        const readChat =  **snap.val()[read];** or **snap.val().read**
       // if (readChat) return null
        console.info("readChat: ", readChat);
})

// Учитывая это ваша структура

---user
-----senderId
--------Chats
-----------ChatId
---------------read: true

приведенный выше код будет делать

Другие вопросы по теме