3

我找不到有关如何在 FaunaDB 中执行此类查询的任何信息。我只需要从文档中选择特定字段,而不是所有字段。我可以使用Select函数选择一个字段,如下所示:

serverClient.query(
  q.Map(
    q.Paginate(q.Documents(q.Collection('products')), {
      size: 12,
    }),
    q.Lambda('X', q.Select(['data', 'title'], q.Get(q.Var('X'))))
  )
)

忘记这个selectAll功能,它已被弃用。

4

2 回答 2

4

你也可以像这样返回一个对象字面量:

serverClient.query(
  q.Map(
    q.Paginate(q.Documents(q.Collection('products')), {
      size: 12,
    }),
    q.Lambda(
     'X',
     {
       title: q.Select(['data', 'title'], q.Get(q.Var('X')),
       otherField: q.Select(['data', 'other'], q.Get(q.Var('X'))
     }
    )
  )
)

此外,您在问题中缺少结束和开始引号['data, title']

于 2020-06-27T18:43:56.817 回答
3

实现此目的的一种方法是创建一个返回所需值的索引。例如,如果使用外壳:

CreateIndex({
  name: "<name of index>",
  source: Collection("products"),
  values: [
    { field: ["data", "title"] },
    { field: ["data", "<another field name>"] }
  ]
})

然后查询该索引将返回索引值中定义的字段。

Map(
  Paginate(
    Match(Index("<name of index>"))
  ),
  Lambda("product", Var("product"))
)

尽管这些示例要在 shell 中使用,但可以通过q.在每个内置函数前面添加一个来轻松地在代码中使用它们。

于 2020-06-27T12:15:33.770 回答