无法按 FaunaDB 中的索引更新文档
Cannot update document by index in FaunaDB
我正在尝试使用 FQL 使用我的 FaunaDB 集合中的索引来更新文档。
Update(
Match(
Index('users_by_id'),
'user-1'
),
{
data: {
name: 'John'
}
}
)
这个查询给我以下错误:
Error: [
{
"position": [
"update"
],
"code": "invalid argument",
"description": "Ref expected, Set provided."
}
]
如何使用索引 users_by_id
更新文档?
Match
returns 集合引用,而不是文档引用,因为可能有零个或多个匹配文档。
如果您确定只有一个文档匹配,您可以使用Get
。当您使用集合引用(而不是文档引用)调用 Get
时,将检索集合的第一项。由于 Update
需要文档引用,因此您可以使用 Select
检索获取的文档的引用。
例如:
Update(
Select(
"ref",
Get(Match(Index('users_by_id'), 'user-1'))
),
{
data: {
name: 'John'
}
}
)
如果您有多个匹配项,您应该使用 Paginate
将集合“实现”为匹配文档数组,然后 Map
在该数组上执行批量更新:
Map(
Paginate(
Match(Index('users_by_id'), 'user-1')
),
Lambda(
"ref",
Update(
Var("ref"),
{
data: {
name: "John",
}
}
)
)
)
注意:为此,您的索引必须有一个空的 values
定义,或者必须将 ref
字段明确定义为唯一值。如果您的索引 returns 多个字段,则必须更新 Lambda
函数以接受与索引的 values
定义中定义的相同数量的参数。
我正在尝试使用 FQL 使用我的 FaunaDB 集合中的索引来更新文档。
Update(
Match(
Index('users_by_id'),
'user-1'
),
{
data: {
name: 'John'
}
}
)
这个查询给我以下错误:
Error: [
{
"position": [
"update"
],
"code": "invalid argument",
"description": "Ref expected, Set provided."
}
]
如何使用索引 users_by_id
更新文档?
Match
returns 集合引用,而不是文档引用,因为可能有零个或多个匹配文档。
如果您确定只有一个文档匹配,您可以使用Get
。当您使用集合引用(而不是文档引用)调用 Get
时,将检索集合的第一项。由于 Update
需要文档引用,因此您可以使用 Select
检索获取的文档的引用。
例如:
Update(
Select(
"ref",
Get(Match(Index('users_by_id'), 'user-1'))
),
{
data: {
name: 'John'
}
}
)
如果您有多个匹配项,您应该使用 Paginate
将集合“实现”为匹配文档数组,然后 Map
在该数组上执行批量更新:
Map(
Paginate(
Match(Index('users_by_id'), 'user-1')
),
Lambda(
"ref",
Update(
Var("ref"),
{
data: {
name: "John",
}
}
)
)
)
注意:为此,您的索引必须有一个空的 values
定义,或者必须将 ref
字段明确定义为唯一值。如果您的索引 returns 多个字段,则必须更新 Lambda
函数以接受与索引的 values
定义中定义的相同数量的参数。