[英]Neo4j JS driver cypher "WHERE" clause not working with parameters
我有一個簡單的函數,可以將 User 與 Id 匹配,並且應該創建這樣的關系。
const createRelation = (userId: string, todoId: string, relationship: string) => {
return session.run(
'MATCH (a:User),(b:Todo)' +
'WHERE a.id = $userId AND b.id = $todoId' +
'CREATE (b)-[r:$relationship]->(a)' +
'RETURN r',
{
userId: userId,
todoId: todoId,
relationship: relationship,
}
);
}
此代碼不會拋出任何錯誤,但也不會創建關系。 如果我手動設置userId
和todoId
的值,例如設置為"1"
,它工作正常! 我使用的參數有誤嗎? 如果是這樣,如何? (我也已經嘗試手動設置關系類型,如果我使用參數,則不會創建任何關系。)
事實證明,您無法對這些類型的構造進行參數化。
參數不能用於以下構造,因為它們構成了編譯到查詢計划中的查詢結構的一部分:
- 屬性鍵; 所以, MATCH (n) WHERE n.$param = 'something' 是無效的
- 關系類型
- 標簽
我自己構建了字符串,如下所示:
'WHERE a.id = ' + userId + ' AND b.id = ' + todoId +
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.