firebase / firebase/firebase-admin-node

[FR]: Why FirestoreDataConverter does not have two generics?

Đang mở
#2,194 0 bình luận 0 reaction 0 người được giao Xem trên GitHub
type: feature request
Ngôn ngữ chính
TypeScript
Star
1.7k
Fork
419
Merge trung bình
3 ngày 10 giờ
Pull request đã merge (30 ngày)
16

Mô tả

**Is your feature request related to a problem? Please describe.**
Add new generics type for fromFirestore in FirestoreDataConverter.

**Describe the solution you'd like**

Hi, I have suggestion about type of FirestoreDataConverter.
Although QueryDocumentSnapshot has generics type, FirestoreDataConverter has no generics except T.
Colud you add generics type S for QueryDocumentSnapshot in "fromFirestore" ?

```
export interface FirestoreDataConverter {
/**
* Called by the Firestore SDK to convert a custom model object of type T
* into a plain Javascript object (suitable for writing directly to the
* Firestore database). To use set() with `merge` and `mergeFields`,
* toFirestore() must be defined with `Partial`.
*
* The `WithFieldValue` type extends `T` to also allow FieldValues such
* as `FieldValue.delete()` to be used as property values.
*/
toFirestore(modelObject: WithFieldValue): DocumentData;

/**
* Called by the Firestore SDK to convert a custom model object of type T
* into a plain Javascript object (suitable for writing directly to the
* Firestore database). To use set() with `merge` and `mergeFields`,
* toFirestore() must be defined with `Partial`.
*
* The `PartialWithFieldValue` type extends `Partial` to allow
* FieldValues such as `FieldValue.delete()` to be used as property values.
* It also supports nested `Partial` by allowing nested fields to be
* omitted.
*/
toFirestore(
modelObject: PartialWithFieldValue,
options: SetOptions
): DocumentData;

/**
* Called by the Firestore SDK to convert Firestore data into an object of
* type T.
*/
fromFirestore(snapshot: QueryDocumentSnapshot): T;
}
```

```
export class QueryDocumentSnapshot<
T = DocumentData
> extends DocumentSnapshot {
private constructor();

/**
* The time the document was created.
*/
readonly createTime: Timestamp;

/**
* The time the document was last updated (at the time the snapshot was
* generated).
*/
readonly updateTime: Timestamp;

/**
* Retrieves all fields in the document as an Object.
*
* @override
* @return An Object containing all fields in the document.
*/
data(): T;
}
```

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Đánh giá

Issue này chưa được đánh giá.

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.