Tài liệu tham khảo API

Bên dưới chứa thông tin tổng quan về các thông số kỹ thuật cho API Bundle Builder, bao gồm các định nghĩa và mô tả chi tiết của TypeScript.

Giao diện tài liệu bó

Thông số kỹ thuật cho một tài liệu trong bộ sưu tập được định cấu hình:

type BundleDocument = {
  // A list of document IDs to serve in the bundle.
  docs?: Array<string>;
  // A map containing individual named queries and their definitions.
  queries?: Map<string, QueryDefinition[]>;
  // A map of parameters and their definitions, which can be provided to a query definition.
  params?: Map<string, ParamDefinition>;
  // Specifies how long to keep the bundle in the client's cache, in seconds. If not defined, client-side cache is disabled.
  clientCache?: string;
  // Only used in combination with Firebase Hosting. Specifies how long to keep the bundle in Firebase Hosting CDN cache, in seconds.
  serverCache: string;
  // Specifies how long (in seconds) to keep the bundle in a Cloud Storage bucket, in seconds. If not defined, Cloud Storage bucket is not accessed.
  fileCache?: string;
  // If a 'File Cache' is specified, bundles created before this timestamp will not be file cached.
  notBefore?: Timestamp;
};

Giao diện định nghĩa tham số

Đặc tả của một tham số duy nhất được xác định trong BundleDocument .

type ParamDefinition = {
  // Whether this parameter is required. If not provided as a query string, an error will be thrown.
  required: boolean;
  // The type of value which will be parsed, defaults to 'string'.
  type?:
    | "string"
    | "integer"
    | "float"
    | "boolean"
    | "string-array"
    | "integer-array"
    | "float-array";
};

Ví dụ: đưa ra tham số sau:

params: {
  name: {
    required: true,
    type: 'string',
  }
}

Khi thực hiện yêu cầu tới điểm cuối HTTP gói, tham số có thể được cung cấp thông qua tham số truy vấn, ví dụ ?name=david . Tham số này có thể được sử dụng trong giá trị QueryDefinition (xem bên dưới) ( $name ) để tạo động các gói.

Giao diện định nghĩa truy vấn

Định nghĩa truy vấn được sử dụng để tạo các truy vấn được đặt tên trên gói. Mỗi đối tượng trong bản đồ queries sẽ tạo một truy vấn được đặt tên mới, sử dụng khóa đối tượng làm tên. Mỗi truy vấn phải chỉ định một bộ sưu tập và tùy chọn một danh sách các điều kiện truy vấn để thực hiện.

type QueryDefinition = {
  // The collection to perform the query on.
  collection: string;
  // An optional list of conditions to perform on the specified collection.
  conditions?: QueryCondition[];
};

Tham số conditions có thể chứa một mảng giao diện QueryCondition . Mỗi mục trong mảng chỉ được bao gồm một điều kiện duy nhất.

type QueryCondition = {
  // Performs a `where` filter on the collection on a given FieldPath, operator and value.
  where?: [
    string,
    (
      | "<"
      | "<="
      | "=="
      | ">="
      | ">"
      | "!="
      | "array-contains"
      | "in"
      | "not-in"
      | "array-contains-any"
    ),
    any
  ];
  orderBy?: [string, ("asc" | "desc")?];
  limit?: number;
  limitToLast?: number;
  offset?: number;
  startAt?: string;
  startAfter?: string;
  endAt?: string;
  endBefore?: string;
};

Ví dụ: để tạo truy vấn có tên "sản phẩm" trên bộ sưu tập products với điều kiện vị trí và giới hạn, kết quả đầu ra của cấu trúc dữ liệu phải khớp với nội dung sau:

queries: {
  products: {
    collection: 'products',
    conditions: [
      { where: ['type', '==', 'featured'] },
      { limit: 10 },
    ],
  }
}

Khi cung cấp các giá trị mảng cho các bộ lọc in , not-in hoặc array-contains-any , bạn phải cung cấp một giá trị được phân tách bằng dấu phẩy làm giá trị vì các giá trị mảng lồng nhau không được hỗ trợ trong Firestore. Ví dụ:

{ where: ['category', 'in', 'womens,shorts'] }, // ['womens', 'shorts']

Bất kỳ giá trị số nào cũng sẽ được phân tích cú pháp dưới dạng số, tuy nhiên nếu cần có giá trị số chuỗi thì giá trị đó phải được đặt trong dấu ngoặc đơn:

{ where: ['price', 'in', '1,2.5'] }, // [1, 2.5]
{ where: ['price', 'in', '"1","2.5"'] }, // ['1', '2.5']

Các điều kiện cũng có thể được sử dụng cùng với các tham số. Ví dụ: nếu một type tham số được xác định (xem ở trên), thì loại tham số này có thể được cung cấp cho một giá trị điều kiện để cung cấp các gói dữ liệu động thông qua cú pháp $ :

// ?type=featured


    conditions: [
      { where: ['type', '==', '$type'] },