首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ArangoDB AQL片段发布

ArangoDB AQL片段发布
EN

Stack Overflow用户
提问于 2020-07-29 20:27:51
回答 1查看 89关注 0票数 0

我正在构建一个复杂的搜索查询,它允许用户同时在多个值上搜索数据库。表单提交所有字段(不管是否保存数据),这些字段看起来类似于(简化):

代码语言:javascript
复制
{
  "PartNumber": "000000",
  "Requestor": "",
  "Assigned" true
}

在上述情况下,我搜索的数据库中,PartNumber等于000000,而Assignedtrue。因为Requestor是空的,所以我想忽略它。

我发现您可以构建AQL片段,但我似乎无法让它们工作。我试过:

代码语言:javascript
复制
const query = `
  FOR part in ${parts}
    ${aql.literal(PartNumber ? `FILTER part.PartNumber == ${PartNumber}` : "")}
    ${aql.literal(Requestor ? `FILTER part.Requestor == ${Requestor}` : "")}
    ${aql.literal(Assigned ? `FILTER part.Assigned == ${Assigned}` : "")}
    RETURN part
`

const results = db._query(query)

但是没有运气,我犯了一个奇怪的错误:ArangoError: AQL: syntax error, unexpected :, expecting ] near ': 105600]

我一直把头撞在墙上,有什么东西我遗漏了吗?

提前感谢!

编辑-附加测试

使用这个简单的查询:

代码语言:javascript
复制
const query = `
  FOR part in ${parts}
    ${aql.literal(PartNumber ? `FILTER part.PartNumber == "000000"` : "")}
    RETURN part
`

在查询到达数据库之前,我只返回它,它显示:"\"\\nFOR part in [ArangoCollection: 105600]\\n[object Object]\\nRETURN part\\n\""

您可以看到,aql.literal()正在为我的条件返回[object Object]。将其输出为字符串,则返回{}。定义了变量PartNumber,因此条件是真实的。

编辑-找到一个解决方案

这是有条件地使用多个字段的正确方式吗?

代码语言:javascript
复制
let query = `
  FOR part IN parts
    ${PartNumber ? `FILTER CONTAINS(part.PartNumber, "${PartNumber}")` : ""}
    ${Requestor ? `FILTER CONTAINS(part.Requestor, "${Requestor}")` : ""}
    RETURN part
`
const results = db._query(query)
res.send(results)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-07-30 13:34:15

aql.literal返回一个由query模板标记理解的对象,但这意味着您实际上需要使用query模板标记-即query`...`而不是`...`

代码语言:javascript
复制
const query = query`
  FOR part in ${parts}
    ${aql.literal(PartNumber ? `FILTER part.PartNumber == ${PartNumber}` : "")}
    ${aql.literal(Requestor ? `FILTER part.Requestor == ${Requestor}` : "")}
    ${aql.literal(Assigned ? `FILTER part.Assigned == ${Assigned}` : "")}
    RETURN part
`
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63161935

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档