Firebase: получить дочерний объект объекта snapshot.val () - PullRequest
0 голосов
/ 04 января 2019

Я пытаюсь получить объект первого подходящего потомка, используя административный SDK Firebase. До сих пор я мог получить объект внутри родительского объекта:

{ -LVOBaJXoai9n1mYrs3F: { created: 1546610959716, displayEnterpriseNumber: "BE 0479.312.137", email: "anthony.magnus@gmail.com", enterpriseNumber: "479312137" } }

но я хочу

{ created: 1546610959716, email: "john.doe@gmail.com", token: '51234', isActive: true }

Код

В функции firebase у меня есть следующий код:

try {
   const token = req.body.token;
   const couponSnapshot = await admin.database().ref(`coupons`).orderByChild('token').equalTo(token).limitToFirst(1).once('value');
   const coupon = couponSnapshot.val();

   console.log(coupon) //{-LVOBaJXoai9n1mYrs3F: {…}} Object in Object...

} catch(error) {
   //error handling
}

Как я могу получить дочерний объект от родительского объекта?

Я попытался перебрать couponSnapshot и прикрепить дочернее значение к переменной coupon, но получаю ошибку.

const couponSnapshot = await admin.database().ref(`coupons`).orderByChild('token').equalTo(token).limitToFirst(1).once('value');

let coupon = {};

couponSnapshot.forEach(childSnapshot => {
  coupon = childSnapshot.val();
});

console.log(coupon.email);

Ошибка:

error TS2345: Argument of type '(childSnapshot: DataSnapshot) => void' is not assignable to parameter of type '(
a: DataSnapshot) => boolean'.
  Type 'void' is not assignable to type 'boolean'.

Property 'email' does not exist on type '{}'.

Может кто-нибудь мне помочь?

1 Ответ

0 голосов
/ 04 января 2019

Вы сказали TypeScript, что вы хотите строго ввести купон, чтобы он был пустым объектом и только пустым объектом. Позже вы скажете ему получить доступ к свойству объекта email, которого нет в пустом объекте. Вот почему вы видите ошибку: Property 'email' does not exist on type '{}'.

Вы не должны предоставлять никаких подсказок для печати вообще. Просто let email; без назначения по умолчанию, если вы хотите, чтобы он был типа any, что позволяет вам получить доступ к произвольным свойствам объекта. Конечно, вам также может понадобиться проверить, определено ли оно, прежде чем приступить к нему, поскольку это также будет ошибкой.

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