내 neo4j (3.2 버전)에는 이미 "플레이어", "팀"및 "위치"레이블 노드가 있습니다. 그들 각각의 관계는 다음기존 관계를 할당하는 새로운 노드 (Neo4j)를 생성하는 데 사용되는 graphql resolver에 유효성 검사를 추가하는 방법은 무엇입니까?
(p는 : 플레이어) - [: Currently_In] -> (t는 : 팀), (p : 플레이어) - [:을 In_Position] -> (a : 위치)
는 지금, 나는 (graphql 리졸버를 사용하여) 새로운 위치에 대한 기존 팀에 새로운 선수를 추가 할. 그러나 직위가 이미있는 경우에는 추가해서는 안됩니다.
예 : 내 dB은 이미 "Barca"(t : Team)와 "Central Forward"위치에 "Messi"(p : Player)를 가지고 있습니다. 이제 "Central Forward"위치에 새 플레이어 "John"을 추가하고 싶습니다. 같은 팀 "바르카", 그는 추가해서는 안됩니다.
graphql resolver에서 어떻게 구현할 수 있습니까? 여기
//Schema.js
AddPlayer(label: String!, PlayerID: String, TeamID: String, PositionID: String): Player
가 해결 프로그램 샘플입니다 : 내가 graphql 또는 neo4j에 의해 확인하는 것이 도움이 될 것입니다 아무것도 찾을 수 없습니다
AddPlayer(_, args) {
let session = driver.session();
var query = `
MERGE(p:Player{PlayerID: $PlayerID })
MERGE(t:Team{TeamID: $TeamID})
MERGE(a:Position{PositionID: $PositionID})
MERGE(p)-[:Currently_In]->(t)
MERGE(p)-[:In_Position]->(a)
ON create set p.label={label}
RETURN p;`
return session.run(query, args)
.then(result => {
return result.records[0].get("p").properties
})
}
여기 내 스키마 샘플입니다. 어떤 도움을 주시면 감사하겠습니다.
감사합니다, 그것은했다. 이제 같은 팀에서 같은 위치에 최대 3 명의 플레이어를 추가하고 싶다면 어떻게해야합니까? 나는 count (PT) = 3을 사용해 보았지만 작동하지 않았다. 어떤 제안이라도!! 예를 들어, 현재 쿼리는 한 팀의 한 팀에 대해 "앞으로"게시물에 한 명의 플레이어 만 추가하도록합니다. 같은 위치에 3 명을 허용하도록 쿼리를 어떻게 제한 할 수 있습니까? –
@CodeReactor 죄송합니다. 원하는 것을 이해하지 못합니다. 더 잘 설명하도록 노력하십시오. –
동일한 팀에 대해 "전방"위치에 "John", "Doe"및 "Jane"플레이어를 추가하고 싶습니다. 하지만이 3 개를 추가 한 후에는 같은 팀의 "전진"포지션에 4 번째 선수를 추가해서는 안됩니다. 협조 해 주셔서 다시 한 번 감사드립니다. –