Firebase:获取 snapshot.val() 对象的子对象



我正在尝试使用 Firebase 的管理 SDK 获取第一个匹配子对象的对象。到目前为止,我能够在父对象中获取一个对象:

{ -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
}

如何从父对象获取子对象?

我尝试遍历优惠券快照并将子值附加到优惠券变量,但出现错误。

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 '{}'.

有人可以帮助我吗?

你已经告诉 TypeScript 你想强类型将 coupon 作为一个空对象,并且只是一个空对象。 稍后,您告诉它访问空对象中不存在的对象email的属性。 这就是您出现错误的原因:Property 'email' does not exist on type '{}'.

您根本不应该提供任何键入提示。 只需let email;,无需默认赋值,如果您希望它属于 any 类型,这使您可以访问对象的任意属性。 当然,您可能还需要在进入它之前检查它是否已定义,因为这也是一个错误。

相关内容

  • 没有找到相关文章

最新更新