私のテストプロジェクトにはneo4j dBとapollo-graphqlサーバを使用しています。私はQ &を作成しようとしています。ユーザーが(一意のIDを持つ)質問を作成して、他のユーザーから回答を得ることができるアプリです(stackoverflowに似ていますが、最低限の機能を備えています)。 "質問 "ノードと" ユーザー "ノードを突然変異によってneo4jdbに追加しました。私のneo4j dbでは、graphqlの突然変異が2つのタイプに対して期待通りに機能しません
したがって、私が作成した突然変異でユーザータイプと質問タイプ。しかし、ユーザー(質問を作成した人)と質問との関係を作成しようとすると、突然変異が期待どおりに機能していません。ここで
は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でダミーのユーザーを挿入していた... ...
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
graphqlスキーマであり、ここで、リゾルバからの変異スニペットである「1」この突然変異クエリーを実行する前にneo4j dbに入れてください。そして、私は既存のユーザーのための質問を作成するにはgraphiQLに、この「createQuestion」突然変異を走ったので、私は、ユーザーID「1」を引数として、
// createQuestion(questionID渡されます。int!タイトル:文字列!詳細は:文字列、ユーザーID:!!INT)
そして、この変異クエリを実行した後、私はの関係を得るために期待していた[:CREATED_BY]既存のユーザーと問題作成の間、 しかし、私のデータベースは、今2を持っています同じユーザID「1」(すなわち、同じユーザID「1」を有するもう1人のユーザが挿入され、この新たに挿入されたユーザと質問ノードとの間に関係がある)を有するユーザ。
私が必要とするのは、同じIDを持つ新しい重複ユーザーを作成せずに、既存のユーザーと質問との関係を作成することです。 誰かが私にここで間違っていることを教えてもらえますか?
let query = "
MERGE (u:Users{userID:{userID}})
MERGE (q:Questions {questionID:{questionID})
ON CREATE SET q.title=
{title},q.details={details}
MERGE (q)-[:CREATED_BY]->(u)
RETURN q;"
:
let query = "
MERGE (u:Users{userID:{userID}})
MERGE (q:Questions {questionID:{questionID},title:
{title},details:{details},userID:{userID}})
MERGE (q)-[:CREATED_BY]->(u)
RETURN q;"
あなたは一意の識別子である私は推測しているquestionIDすでに場所では、持っていると私は、クエリを変更します
どうもありがとう、それを私が期待した通りに働いた。userID = 1の場合、期待される関係と結果が生成されました。しかし、私は他のユーザ(userID = 2)のために同じ質問IDを持つ別の質問を作成しようとしましたが、今度は自分のneo4j dbに同じ質問(questionID = 1)に[:CREATED_BY]という関係があります。この場合、どうすればいいのか教えてください。 –
例を追加 –
ありがとう@Tomaž、私はあなたが言及した両方の方法を試みたが、同じQuestionIDが複数のユーザーのために作成されているようだ。そして、neo4jが一意識別子をサポートしていないので、質問IDのために一意のIDを作成することはできません。私は今、深刻な問題に陥っています。 –