1

我有一组包含日期字段“日期”的餐点。我想查询特定日期范围内的所有餐点。我努力构建一个 FQL 查询,该查询返回整个文档,以便在用户生成的函数中使用,以便在 GraphQL 查询中使用。

我有的:

索引'mealsByDate':

{
  name: "mealsByDate",
  unique: false,
  serialized: true,
  source: "Meal",
  terms: [],
  values: [
    {
      field: ["data", "date"]
    },
    {
      field: ["ref"]
    }
  ]
}

询问:

Paginate(Range(Match(Index("mealsByDate")), Date("2019-12-30"), Date("2020-01-05")))

结果:

{
  "data": [
    [
      Date("2019-12-30"),
      Ref(Collection("Meal"), "253389516394463764")
    ],
    [
      Date("2019-12-30"),
      Ref(Collection("Meal"), "253389626235945490")
    ],
    [
      Date("2020-01-05"),
      Ref(Collection("Meal"), "253389653063762452")
    ]
  ]
}

如何在结果集中获取 refs 的文档?我尝试将 Paginate 函数放入 Map 函数并应用执行 Get 的 Lambda,但我无法在结果中选择 ref。还是整个方法有缺陷?

4

1 回答 1

2

当您对包含多个value字段的索引的结果进行分页时,每个结果都是索引文档中指定值的数组。正如您的查询所示,您的索引返回包含日期和文档参考的 2 个值的数组。

当您使用 包装查询时Map,您提供的 lambda 函数必须接受相同数量的参数,如下所示:

Map(
  Paginate(
    Range(
      Match(Index("mealsByDate")),
      Date("2019-12-30"),
      Date("2020-01-05")
    )
  ),
  Lambda(
    ["d", "r"],
    Get(Var("r"))
  )
)

使用该查询,日期字段作为参数传递d,引用作为参数传递rVar这使得使用该函数可以轻松访问 ref 。

当您使用Map迭代可能包含数组的其他结构时,您可以使用该Select函数来访问数组的编号元素。有关更多详细信息,请参阅https://docs.fauna.com/fauna/current/api/fql/functions/select

于 2020-01-07T21:57:56.710 回答