Skip to content

[Firestore] where should use a "type safe" approach #7456

@cedvdb

Description

@cedvdb

You can currently use any string in the where clause of firestore. When using with converter the fieldPath should be "string safe"

Current implementation:

    where(
      fieldPath: string | FieldPath,
      opStr: WhereFilterOp,
      value: any
    ): Query<T>;

Proposed implementation (when using with converter) :

    where(
      fieldPath: Path<T>,
      opStr: WhereFilterOp,
      value: any
    ): Query<T>;

where Path:

// Allows dot separated properties of <T>
// for firebase updates
export type UpdatePath<T, K extends keyof T> =
  K extends string
  ? T[K] extends Record<string, any>
  ? T[K] extends ArrayLike<any>
  ? K | `${K}.${UpdatePath<T[K], Exclude<keyof T[K], keyof any[]>>}`
  : K | `${K}.${UpdatePath<T[K], keyof T[K]>}`
  : K
  : never;
export type Path<T> = UpdatePath<T, keyof T> | keyof T;

Metadata

Metadata

Assignees

No one assigned

    Labels

    api: firestoreIssues related to the Firestore API.library: nodejs-firestoreIssues transferred from another repositorypriority: p2Moderately-important priority. Fix may not be included in next release.type: feature request‘Nice-to-have’ improvement, new feature or different behavior or design.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions