이것은 내 mongoDB의 예제 문서입니다. Apollo/GraphQL을 통해 content.en
배열을 가져와야합니다. 하지만 중첩 된 객체가 나를 위해 문제가되고 있습니다. en
이 언어 태그이므로 변수로 사용할 수 있다면 좋을 것입니다.Apollo/GraphQL : 중첩 된 요소를 얻는 방법?
데이터
{ "_id" : "9uPjYoYu58WM5Tbtf", "content" : { "en" : [ { "content" : "Third paragraph", "timestamp" : 1484939404 } ] }, "main" : "Dn59y87PGhkJXpaiZ" }
MongoDB를에서 graphQL 결과는 같아야합니다
의미
{
"data": {
"article": [
{
"_id": "9uPjYoYu58WM5Tbtf",
"content": [
{
"content" : "Third paragraph",
"timestamp" : 1484939404
}
]
}
]
}
}
, 나는 ID 및 언어 특정 콘텐츠 배열을 얻을 필요가있다.
유형
const ArticleType = new GraphQLObjectType({
name: 'article',
fields: {
_id: { type: GraphQLID },
content: { type: GraphQLString }
}
})
GraphQL 스키마
export default new GraphQLSchema({
query: new GraphQLObjectType({
name: 'RootQueryType',
fields: {
article: {
type: new GraphQLList(ArticleType),
description: 'Content of article dataset',
args: {
id: {
name: 'id',
type: new GraphQLNonNull(GraphQLID)
}
},
async resolve ({ db }, args) {
return db.collection('articles').find({ main: args.id }).toArray()
}
}
}
})
})
Q : 나는 다음 설치를 얻고 무엇을
그러나 이것은 아니다, content: { type: GraphQLString }
: uery
{
article(id: "Dn59y87PGhkJXpaiZ") {
_id,
content
}
}
결과
{
"data": {
"article": [
{
"_id": "9uPjYoYu58WM5Tbtf",
"content": "[object Object]"
}
]
}
}
정확히 어떤 쿼리가 반환 할 것으로 예상합니까? 질문에 그것을 추가 할 수 있습니까? – DevNebulae
@DevNebulae 이미 게시했습니다. 두 번째 코드 블록을 참조하십시오. "graphQL 결과는" – user3142695
이어야합니다. 당신이 두 개의 args를 필요로한다고 생각합니다. id 인수는 루트 해결에 대한 기사를 필터링하고 language arg는 sub resolve에 대한 내용을 필터링합니다. 그래서 mongo 질의는 모든 언어 내용을 가진 id와 일치하는 모든 기사를 반환 할 것이고 graphql은 언어 arg에 기반한 내용을 반환 할 것입니다. 또한 컨텐츠를 스키마에 맵핑하십시오. – Veeram