【问题标题】:Load FaunaDB documents within date range在日期范围内加载 FaunaDB 文档
【发布时间】:2020-04-21 19:58:51
【问题描述】:

我有一个包含日期字段“日期”的餐点集合。我想查询特定日期范围内的所有餐点。我很难构建一个 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。还是整个方法有缺陷?

【问题讨论】:

    标签: faunadb


    【解决方案1】:

    当您对包含多个 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 传递,引用作为参数r 传递。这使得使用 Var 函数可以轻松访问 ref。

    当您使用Map 迭代可能包含数组的其他结构时,您可以使用Select 函数访问数组的编号元素。详情请见https://docs.fauna.com/fauna/current/api/fql/functions/select

    【讨论】:

      猜你喜欢
      • 2020-03-22
      • 2021-07-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-07
      • 1970-01-01
      • 1970-01-01
      • 2020-03-19
      相关资源
      最近更新 更多