diff --git a/CHANGELOG.md b/CHANGELOG.md index 83cb010df..ebf9ddc91 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,4 @@ - Add LLM guidance (#1736) +- Fix issue calling DataSnapshot methods with null data (#1661) - Adds auth.rawToken to context to allow access to the underlying token. (#1678) - Fix logger runtime exceptions #(1704) diff --git a/spec/v1/providers/database.spec.ts b/spec/v1/providers/database.spec.ts index 18d973b1d..c189ca4eb 100644 --- a/spec/v1/providers/database.spec.ts +++ b/spec/v1/providers/database.spec.ts @@ -494,20 +494,31 @@ describe("DataSnapshot", () => { it("should deal with null-values appropriately", () => { populate(null); expect(subject.val()).to.be.null; + expect(subject.child("a").val()).to.be.null; + expect(subject.child("a/b").val()).to.be.null; populate({ myKey: null }); expect(subject.val()).to.be.null; + expect(subject.child("myKey").val()).to.be.null; + expect(subject.child("myKey/a").val()).to.be.null; + expect(subject.child("myKey/a/b").val()).to.be.null; + expect(subject.child("a").val()).to.be.null; + expect(subject.child("a/b").val()).to.be.null; }); it("should deal with empty object values appropriately", () => { populate({}); expect(subject.val()).to.be.null; + expect(subject.child("a").val()).to.be.null; populate({ myKey: {} }); expect(subject.val()).to.be.null; + expect(subject.child("myKey").val()).to.be.null; populate({ myKey: { child: null } }); expect(subject.val()).to.be.null; + expect(subject.child("myKey").val()).to.be.null; + expect(subject.child("myKey/child").val()).to.be.null; }); it("should deal with empty array values appropriately", () => { diff --git a/src/common/providers/database.ts b/src/common/providers/database.ts index fb8c47c9b..b9f059157 100644 --- a/src/common/providers/database.ts +++ b/src/common/providers/database.ts @@ -131,7 +131,7 @@ export class DataSnapshot implements database.DataSnapshot { } if (parts.length) { for (const part of parts) { - if (source[part] === undefined) { + if (typeof source === "undefined" || source === null) { return null; } source = source[part];