【发布时间】:2019-02-28 00:16:29
【问题描述】:
尝试在 AQL 中使用 UPSERT 并成功,直到我需要将一个值推送到列表数组中(我还需要检查它是否存在,尽管我认为我有)
代码
const t_list_ = db._query(aql`
UPSERT { token_name: ${token_i}, type: ${type}}
INSERT { token_name: ${token_i},
type: ${type},
frequency: ${tokens[i].frequency},
user_list: [${req.pathParams.user_id}] }
UPDATE { frequency: OLD.frequency + ${tokens[i].frequency},
user_list: OLD.user_list.push(${req.pathParams.user_id})}
IN token_category
RETURN { doc: NEW, type: OLD ? 'update' : 'insert' }`).toArray()
错误是:ArangoError: 语法错误,意外 (, 期望 } 靠近 '(@value3)} IN token_category
【问题讨论】:
-
这似乎不仅仅是一个常规的 AQL 查询,我是否理解它是一个字符串,您正在与另一种编程语言结合使用,将变量推入?您使用什么语言?
-
旁注:您确实知道 AQL 支持称为 'bind parameters' 的东西,它允许您在一个地方声明所有变量,然后使用 @variable-name在您的查询中自动将您声明的值放回该查询中,对吗?
-
谢谢,它是来自 foxx 微服务 (javascript) 的 AQL db_query。感谢您提供有关绑定变量的提示。