我正在爲我的測試項目使用neo4j dB和apollo-graphql服務器。我試圖創建一個應用程序,其中用戶可以創建一個問題(具有唯一的ID),然後它將由其他用戶回答(類似於stackoverflow但具有非常小的功能)。我想創建「問題「節點和」用戶「節點在我的neo4j數據庫中通過變異。在我的neo4j數據庫中,graphql變異沒有像預期的那樣工作2種類型
所以,在我創建的突變中用戶類型和問題類型。但是,當我試圖創建用戶(誰創建問題)和問題之間的關係時,突變不能按預期工作。
這裏是graphql模式...
type Question {
questionID: Int! # unique id for a particular question
title: String! # Question Title
details: String!
createdBy: User!
}
type User {
userID: Int!
name: String!
email: String
questions: [Question] # specific questions related to the user
}
type Mutation {
createUser(name: String!, userID: Int!): [User]
createQuestion(questionID: Int!, title: String!, details: String!,userID: Int! ): Question
這裏是旋轉變壓器突變片段...
Mutation: {
createQuestion(_,params){
let session = driver.session();
let query = "MERGE (q:Questions {questionID:{questionID},title:
{title},details:{details},userID:{userID}})-[:CREATED_BY]->
(u:Users{userID:{userID}}) RETURN q;"
return session.run(query,params)
.then(result => {
return result.records.map(record => {
return record.get("q").properties
}
)
}
)
},
}
我已經插入了獨特的用戶ID虛擬用戶「1」在運行這個變異查詢之前在neo4j db中。我跑graphiQL這個「createQuestion」突變創造一個問題爲現有的用戶,所以我通過用戶ID「1」的說法,
// createQuestion(questionID:詮釋!標題:字符串!細節:字符串,用戶ID:智力)
並運行這個突變的查詢後,我希望得到的關係[:CREATED_BY]現有的用戶,並創建了問題, 但我的數據庫目前擁有2間具有相同用戶標識「1」的用戶(即,具有相同用戶標識「1」的另一用戶已被插入,並且現在在該新插入用戶和問題節點之間存在該關係)。
我需要的是避免使用相同的id創建新的重複用戶,而只是爲了創建現有用戶和問題之間的關係。 那麼有人可以讓我知道我在這裏弄錯了什麼嗎?
非常感謝,它按我期望的方式工作。對於userID = 1,產生了預期的關係和結果。但後來我試圖創建另一個問題與其他用戶(userID = 2)相同的問題ID,現在在我的neo4j數據庫,相同的問題(questionID = 1)與用戶1和新用戶2都有[:CREATED_BY]關係。你能告訴我在這種情況下該怎麼辦? –
增加了一個例子 –
Thanks @Tomaž,我嘗試了你提到的兩種方式,但仍然是相同的QuestionID似乎是爲多個用戶創建的。而且由於neo4j不支持uniqueidentifiers,所以我無法爲問題ID創建唯一的ID,我現在處於深陷困境之中。您能幫我嗎? –