我正在構建一個連接到NEO4J實例的REST API。我使用koa-neo4j庫作爲基礎(https://github.com/assister-ai/koa-neo4j-starter-kit)。我是所有這些技術的初學者,但感謝來自這個論壇的一些幫助,我的基本功能工作。例如,下面的代碼允許我創建一個標籤爲「metric」的新節點,並設置名稱和dateAdded屬性。將一組屬性和節點作爲POST語句傳遞給KOA-NEO4J或BOLT
網址:
/metric?metricName=Test&dateAdded=2/21/2017
index.js
app.defineAPI({
method: 'POST',
route: '/api/v1/imm/metric',
cypherQueryFile: './src/api/v1/imm/metric/createMetric.cyp'
});
createMetric.cyp」
CREATE (n:metric {
name: $metricName,
dateAdded: $dateAdded
})
return ID(n) as id
不過,我struggl瞭解我如何處理更復雜的例子。如果我不知道在預先創建新節點時要添加多少屬性,或者希望在單個後置語句中創建多個節點,我該如何處理情況。理想情況下,我希望能夠傳遞類似JSON的東西作爲POST的一部分,它將包含我想要創建的所有節點,標籤和屬性。是這樣的可能嗎?我嘗試使用下面的Cypher查詢並在POST正文中傳遞一個JSON字符串,但它不起作用。
UNWIND $props AS properties
CREATE (n:metric)
SET n = properties
RETURN n
我會更好切換tothe Neo4j的REST API,而不是螺栓協議和KOA-Neo4j的框架。從我的研究中,我認爲最好使用BOLT,但我希望Rest API作爲我的前後端之間的中間層,所以如果長遠來說這會更容易,我願意改變。
感謝您的幫助!
感謝您的輸入。我嘗試了你的代碼並且傳遞了下面的「props = [{metricName:」Test Name「,dateCreated:」02/21/2017「}]」但是我得到錯誤「爲節點創建提供的參數不是一個Map。很顯然,我沒有正確地構建「地圖」 - 對此有何指點? – n4nite
@ n4nite您的道具參數必須是地圖,並且您要在查詢中使用的值應該是該地圖中其值爲地圖集合的條目。如果我們使用cybersam的示例,要使用'$ prop_collection'參數,您的道具必須是:'props = {prop_collection:[{metricName:「Test Name」,dateCreated:「02/21/2017」}] }' – InverseFalcon
有什麼地方可以在Neo4j的地圖上閱讀,因爲我無法使用這個工具,並且在搜索Google時找不到太多內容?我正在使用這些示例,並將「props」字符串作爲我的POST語句的一部分傳遞給API,但我仍然收到一個錯誤消息,「爲節點創建提供的參數不是Map」。 – n4nite