From cae415862eacf5827d2a89cf8b788cd2c4a56c4a Mon Sep 17 00:00:00 2001 From: Thomas Bouldin Date: Mon, 12 Jun 2023 12:28:25 -0700 Subject: [PATCH] RTDB exists() should return true for falsy values (e.g. 0, false, "") (#1410) Fix for #1407 --- spec/v1/providers/database.spec.ts | 9 +++++++++ src/common/providers/database.ts | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/spec/v1/providers/database.spec.ts b/spec/v1/providers/database.spec.ts index 9651961dc..874b1de29 100644 --- a/spec/v1/providers/database.spec.ts +++ b/spec/v1/providers/database.spec.ts @@ -580,6 +580,15 @@ describe("DataSnapshot", () => { populate({ a: [{}] }); expect(subject.child("a").exists()).to.be.false; }); + + it("should be true for a falsy value (other than null)", () => { + populate({ num: 0, bool: false, n: null }); + expect(subject.exists()).to.be.true; + expect(subject.child("num").exists()).to.be.true; + expect(subject.child("bool").exists()).to.be.true; + expect(subject.child("n").exists()).to.be.false; + expect(subject.child("missing").exists()).to.be.false; + }); }); describe("#forEach(action: (a: DataSnapshot) => boolean): boolean", () => { diff --git a/src/common/providers/database.ts b/src/common/providers/database.ts index 43f977b53..33250f4c0 100644 --- a/src/common/providers/database.ts +++ b/src/common/providers/database.ts @@ -159,7 +159,7 @@ export class DataSnapshot implements database.DataSnapshot { */ exists(): boolean { const val = this.val(); - if (!val || val === null) { + if (typeof val === "undefined" || val === null) { return false; } if (typeof val === "object" && Object.keys(val).length === 0) {