如何将数据格式化为 algolia

How to format data to algolia

我正在学习如何使用 Algolia,我有几个问题。

我有 table FreightDriver,它与 table Truck

有关系 one to many
id: ID!
name: String!
email: String!
phoneNumber: String!
cities: [String!]!
state: String!
country: String!
picture: String
trucks: [Truck] @connection(keyName: "byFreightDriver", fields: ["id"])

然后,table Truck,它与 table FreightDriver 有关系 one to one,另一个 table,即 Box one to one 作为嗯

id: ID!
freightDriverId: ID!
boxId: ID!
brand: String!
model: String!
yearModel: Int!
// and more fields
freightDriver: FreightDriver @connection(fields: ["freightDriverId"])
box: Box @connection(fields: ["boxId"])

和 table 框:

id: ID!
type: String!
width: Float!
height: Float!
depth: Float!

我想根据 FreightDrivers 的州和城市查找卡车,并且(如果用户需要),根据卡车的箱子类型和品牌或型号查找(仅作为示例) .

FreightDriver 按州和城市查找的示例:

{
  "data": {
    "freightDriversByState": {
      "items": [
        {
          "name": "Andrés Montoya",
          "cities": [
            "GUADALAJARA"
          ],
          "state": "JALISCO",
          "country": "MX",
          "trucks": {
            "items": [
              {
                "brand": "chevrolet",
                "model": "12",
                "yearModel": 2020,
                "box": {
                  "type": "Ganadera",
                  "width": 1,
                  "height": 2,
                  "depth": 3
                }
              },
              {
                "brand": "chevrolet",
                "model": "12",
                "yearModel": 2020,
                "box": {
                  "type": "Seca (abierta)",
                  "width": 12,
                  "height": 12,
                  "depth": 12
                }
              },
              {
                "brand": "chevrolet",
                "model": "12",
                "yearModel": 2020,
                "box": {
                  "type": "Seca (abierta)",
                  "width": 12,
                  "height": 12,
                  "depth": 12
                }
              },
              {
                "brand": "chevrolet",
                "model": "Semi",
                "yearModel": 2020,
                "box": {
                  "type": "Seca (abierta)",
                  "width": 1,
                  "height": 2,
                  "depth": 3
                }
              },
              {
                "brand": "chevrolet",
                "model": "12",
                "yearModel": 2020,
                "box": {
                  "type": "Seca (abierta)",
                  "width": 1,
                  "height": 2,
                  "depth": 3
                }
              },
              {
                "brand": "chevrolet",
                "model": "12",
                "yearModel": 2020,
                "box": {
                  "type": "Volcadora",
                  "width": 1,
                  "height": 2,
                  "depth": 3
                }
              },
              {
                "brand": "hola",
                "model": "12",
                "yearModel": 12,
                "box": {
                  "type": "Plataforma",
                  "width": 1,
                  "height": 2,
                  "depth": 3
                }
              },
              {
                "brand": "Ford",
                "model": "12",
                "yearModel": 2020,
                "box": {
                  "type": "Seca (abierta)",
                  "width": 1,
                  "height": 2,
                  "depth": 1
                }
              },
              {
                "brand": "dasdas",
                "model": "12",
                "yearModel": 12231,
                "box": {
                  "type": "Grúa",
                  "width": 1,
                  "height": 2,
                  "depth": 3
                }
              },
              {
                "brand": "Tesla",
                "model": "Semi",
                "yearModel": 2020,
                "box": {
                  "type": "Seca (abierta)",
                  "width": 4,
                  "height": 4,
                  "depth": 2
                }
              }
            ]
          }
        },
        {
          "name": "Roberto mendez",
          "cities": [
            "GUADALAJARA"
          ],
          "state": "JALISCO",
          "country": "MX",
          "trucks": {
            "items": []
          }
        },
        {
          "name": "Fletes Jalisco Sa de Cv ",
          "cities": [
            "GUADALAJARA"
          ],
          "state": "JALISCO",
          "country": "MX",
          "trucks": {
            "items": [
              {
                "brand": "Ford",
                "model": "F-450",
                "yearModel": 2018,
                "box": {
                  "type": "Seca (cerrada)",
                  "width": 2.7,
                  "height": 2.5,
                  "depth": 4.5
                }
              },
              {
                "brand": "Hiundai",
                "model": "H100",
                "yearModel": 2009,
                "box": {
                  "type": "Seca (abierta)",
                  "width": 2.3,
                  "height": 2,
                  "depth": 4
                }
              },
              {
                "brand": "Hiundai",
                "model": "H100",
                "yearModel": 2020,
                "box": {
                  "type": "Seca (abierta)",
                  "width": 2.35,
                  "height": 2,
                  "depth": 3
                }
              },
              {
                "brand": "Ford",
                "model": "F-450",
                "yearModel": 2018,
                "box": {
                  "type": "Seca (cerrada)",
                  "width": 2.7,
                  "height": 2.2,
                  "depth": 3
                }
              },
              {
                "brand": "Ford",
                "model": "F-450",
                "yearModel": 2004,
                "box": {
                  "type": "Seca (abierta)",
                  "width": 2.5,
                  "height": 2,
                  "depth": 3
                }
              }
            ]
          }
        },
        {
          "name": "Cotransport",
          "cities": [
            "GUADALAJARA"
          ],
          "state": "JALISCO",
          "country": "MX",
          "trucks": {
            "items": [
              {
                "brand": "Chevrolet",
                "model": "CX-5",
                "yearModel": 2019,
                "box": {
                  "type": "Seca (cerrada)",
                  "width": 4,
                  "height": 3,
                  "depth": 4
                }
              }
            ]
          }
        },
        {
          "name": "Andrés",
          "cities": [
            "EL LIMÓN",
            "MAGDALENA",
            "SANTA MARÍA DEL ORO",
            "GUADALAJARA",
            "ETZATLÁN"
          ],
          "state": "JALISCO",
          "country": "MX",
          "trucks": {
            "items": [
              {
                "brand": "chevrolet",
                "model": "12",
                "yearModel": 2020,
                "box": {
                  "type": "Seca (abierta)",
                  "width": 1,
                  "height": 2,
                  "depth": 3
                }
              }
            ]
          }
        }
      ]
    }
  }
}

但是,如果我想使用货运的州和城市 driver、箱子的类型和卡车的型号或品牌,这就是问题所在,因为我正在使用Dynamodb 和这个没有关系,因此,获取确切数据有点棘手。这就是我想使用 Algolia 的原因,但在这种情况下如何为 Algolia 格式化数据?我需要做什么?谢谢!

如果有人感兴趣,这里是答案https://discourse.algolia.com/t/how-to-format-data-to-algolia/10897