簡體   English   中英

Neo4j JS 驅動程序密碼“WHERE”子句不適用於參數

[英]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,
        }
    );
}

此代碼不會拋出任何錯誤,但也不會創建關系。 如果我手動設置userIdtodoId的值,例如設置為"1" ,它工作正常! 我使用的參數有誤嗎? 如果是這樣,如何? (我也已經嘗試手動設置關系類型,如果我使用參數,則不會創建任何關系。)

事實證明,您無法對這些類型的構造進行參數化

參數不能用於以下構造,因為它們構成了編譯到查詢計划中的查詢結構的一部分:

  • 屬性鍵; 所以, MATCH (n) WHERE n.$param = 'something' 是無效的
  • 關系類型
  • 標簽

我自己構建了字符串,如下所示:

'WHERE a.id = ' + userId + ' AND b.id = ' + todoId +

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM