2012-05-15 69 views
0

我有獨立的Neo4j REST服務器中的數據,包括節點索引。我想要純JavaScript客戶端連接到Neo4j並將格式化的數據提供給d3.js,這是一個基於Node.js構建的可視化庫。如何通過JavaScript REST客戶端處理Neo4j服務器中的索引?

JugglingDB很流行,但Neo4j的實施做「錯」:https://github.com/1602/jugglingdb/issues/56

在github下一個最流行的選擇是:https://github.com/thingdom/node-neo4j 尋找方法定義https://github.com/thingdom/node-neo4j/blob/develop/lib/GraphDatabase._coffee

我能使用「getNodeById:(id,_) - >」

> node1 = db.getNodeById(12, callback); 

返回來自REST服務器的輸出,包括節點屬性。真棒。

我無法弄清楚如何使用 「getIndexedNodes:(索引屬性值,_) - >」

> indexedNodes = db.getIndexedNodes:(index1, username, Homer, callback); 
... 

indexedNodes沒有得到確定。我試過幾種不同的組合。沒有快樂。我如何使用這個命令?

另外,getIndexedNodes()需要鍵值對。有沒有什麼辦法可以在沒有循環的情況下獲取索引中的所有項目或項目的子集?

回答

1

這裏是node-neo4j的作者/維護者之一。 =)

indexedNodes沒有被定義。我試過幾種不同的組合。沒有快樂。我如何使用這個命令?

你的例子似乎有一些語法錯誤。 index1,usernameHomer變量是否定義在別處?假定不是,即假設這些是實際的索引名稱,屬性名稱和值,則它們需要被引用爲字符串文字,例如, 'index1','username''Homer'。但是在右括號之前也有一個冒號,不應該在那裏。 (這是什麼導致了Node.js的REPL不明白你的命令)

然後,注意indexedNodes應該undefined - getIndexedNodes(),最喜歡的Node.js的API是異步的,所以它的返回值是undefined 。因此,回調參數。

可以看到的getIndexedNodes()是如何在樣品node-neo4j-template的應用使用的自述引用的例子:

https://github.com/aseemk/node-neo4j-template/blob/2012-03-01/models/user.js#L149-L160

另外,getIndexedNodes()需要一個鍵 - 值對。有沒有什麼辦法可以在沒有循環的情況下獲取索引中的所有項目或項目的子集?

getIndexedNodes()確實會返回所有匹配的節點,所以不需要循環。獲取子集不受Neo4j的REST API直接支持,但您可以使用Cypher來獲得結果。

E.g.返回6日至15日的用戶(假設他們有一個type屬性設置爲user)按字母順序排序的用戶名:

db.query([ 
    'START node=node:index1(type="user")', 
    'RETURN node ORDER BY node.username', 
    'SKIP 5 LIMIT 10' 
].join('\n'), callback); 

Cypher支架依然是迅速發展的,雖然如此,一定要引用匹配的Neo4j版本的文檔你正在使用。

如上所述,一般來說,看看示例node-neo4j-template應用程序。它涵蓋了圖書館所展示的廣泛功能以及典型的應用程序所需要的功能。

希望這會有所幫助。 =)

+0

我意識到節點的Neo4j支持的Cypher我送這之後不久。我認爲我的語法錯了,webadmin控制檯幫助我們弄清楚了這一點。非常感謝您的全面回答! – McPedr0

+0

太棒了!樂於幫助。 –

相關問題