Skip to content

Commit 587e95c

Browse files
authored
resolve wildcards in DB resource name (#100)
1 parent 7f9fbe1 commit 587e95c

File tree

2 files changed

+20
-0
lines changed

2 files changed

+20
-0
lines changed

spec/providers/database.spec.ts

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,23 @@ describe('DatabaseBuilder', () => {
6363
},
6464
} as any);
6565
});
66+
67+
it('should interpolate params until the server does it', () => {
68+
let handler = database.ref('/users/{id}').onWrite(event => {
69+
expect(event.resource).to.equal('projects/_/instances/subdomain/refs/users/aUserId');
70+
});
71+
72+
return handler({
73+
data: {
74+
data: null,
75+
delta: 'hello',
76+
},
77+
resource: 'projects/_/instances/subdomains/refs/users/{id}',
78+
params: {
79+
id: 'aUserId',
80+
},
81+
});
82+
});
6683
});
6784
});
6885

src/providers/database.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,9 @@ export class DeltaSnapshot implements firebase.database.DataSnapshot {
105105
constructor(private app: firebase.app.App, private adminApp: firebase.app.App, event: Event<any>) {
106106
if (event) {
107107
let resourceRegex = `projects/([^/]+)/instances/([^/]+)/refs(/.+)?`;
108+
_.forEach(event.params, (val, key) => {
109+
event.resource = _.replace(event.resource, `{${key}}`, val);
110+
});
108111
let match = event.resource.match(new RegExp(resourceRegex));
109112
if (!match) {
110113
throw new Error(`Unexpected resource string for Firebase Realtime Database event: ${event.resource}. ` +

0 commit comments

Comments
 (0)