googleapis / googleapis/google-cloud-node

Updating a nested document with a dynamic path using typescript

Open
#7,464 11 comments 1 reaction 1 assignee Assigned to @MarkDuckworth View on GitHub
api: firestore library: nodejs-firestore priority: p3 type: question
Dominant language
TypeScript
Stars
3.2k
Forks
712
Avg merge
2d 3h
Merged PRs (30d)
99

Description

I have some code which was working great with earlier versions of firestore/typescript, but after updating can't see how firestore expects nested objects to be updated with dynamic paths.

It happily accepts a single string literal like this:
```typescript
// no type error
const keyPath = "paymentHistory.test";
t.update(userRef, {
[keyPath]: payment,
});
```

But strangely this results in a complex type error involving `AddPrefixToKeys`.
```typescript
// type error
const keyPath = "paymentHistory." + "test";
t.update(userRef, {
[keyPath]: payment,
});
```

The `paymentHistory` property on the User object is defined like this:
```typescript
paymentHistory: Record
```

I am using package versions:
```
"firebase-admin": "11.10.1",
"firebase-functions": "4.4.1",
"typescript": "5.2.2"
```

How can I satisfy the types, when the nested key `"test"` is a variable and not known at build time?

Thanks!

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.