Faunadb 条件语句不能运行 false 条件表达式
Faunadb conditional statement can't run false condition expression
我尝试使用 nextjs 和 faunadb 构建全文搜索 API。
我引用了这篇文章 "How to Get a Full-Text Search with FaunaDB"
我的索引设置如下。
此 API 将收到两个值 artist 和 term(搜索词的缩写)
如果有两个,则通过and语句合并。
或者它将 运行 有自己的语句或每个值。
实现代码如下。
const queryCase = req.body.artist && req.body.term ? 1 : req.body.term != undefined ? 2 : 3
const tokens = await serverClient.query(
Filter(
Paginate(Match(Index("all_token_by_artist_and_description"), true)),
Lambda(
[
"artist",
"description",
"image",
"seller",
"creator",
"category",
"refId"
],
If(
Equals(queryCase, 1),
And(
Or(
ContainsStr(
LowerCase(Var("artist")),
req.body.term
),
ContainsStr(
LowerCase(Var("description")),
req.body.term
)
),
Equals(
LowerCase(Var('artist')),
LowerCase(req.body.artist)
)
),
If(
Equals(queryCase, 2),
Or(
ContainsStr(
LowerCase(Var("artist")),
req.body.term
),
ContainsStr(
LowerCase(Var("description")),
req.body.term
)
),
Equals(
LowerCase(Var('artist')),
LowerCase(req.body.artist)
)
)
)
)
)
)
res.status(200).json(tokens.data)
它不能运行 false 条件表达式。错误的表达很好
当我切换真实表达和虚假表达时。
我通过进行 3 个单独的查询来修复它。
if(queryCase == 1){
tokens = await serverClient.query(
.....
)
}else if(queryCase == 2){
tokens = await serverClient.query(
.....
)
}else{
tokens = await serverClient.query(
.....
)
}
但我真的不知道原来的查询有什么问题。
谁能告诉我查询的问题?
是缺失值造成的。所以我在确定案例后将随机字符串分配给缺失值。
例如)如果我只从请求中获得“艺术家”值,请将随机字符串分配给“术语”。
我尝试使用 nextjs 和 faunadb 构建全文搜索 API。
我引用了这篇文章 "How to Get a Full-Text Search with FaunaDB"
我的索引设置如下。
如果有两个,则通过and语句合并。
或者它将 运行 有自己的语句或每个值。
实现代码如下。
const queryCase = req.body.artist && req.body.term ? 1 : req.body.term != undefined ? 2 : 3
const tokens = await serverClient.query(
Filter(
Paginate(Match(Index("all_token_by_artist_and_description"), true)),
Lambda(
[
"artist",
"description",
"image",
"seller",
"creator",
"category",
"refId"
],
If(
Equals(queryCase, 1),
And(
Or(
ContainsStr(
LowerCase(Var("artist")),
req.body.term
),
ContainsStr(
LowerCase(Var("description")),
req.body.term
)
),
Equals(
LowerCase(Var('artist')),
LowerCase(req.body.artist)
)
),
If(
Equals(queryCase, 2),
Or(
ContainsStr(
LowerCase(Var("artist")),
req.body.term
),
ContainsStr(
LowerCase(Var("description")),
req.body.term
)
),
Equals(
LowerCase(Var('artist')),
LowerCase(req.body.artist)
)
)
)
)
)
)
res.status(200).json(tokens.data)
它不能运行 false 条件表达式。错误的表达很好
当我切换真实表达和虚假表达时。
我通过进行 3 个单独的查询来修复它。
if(queryCase == 1){
tokens = await serverClient.query(
.....
)
}else if(queryCase == 2){
tokens = await serverClient.query(
.....
)
}else{
tokens = await serverClient.query(
.....
)
}
但我真的不知道原来的查询有什么问题。 谁能告诉我查询的问题?
是缺失值造成的。所以我在确定案例后将随机字符串分配给缺失值。 例如)如果我只从请求中获得“艺术家”值,请将随机字符串分配给“术语”。