>

Express + Apollo Server + GraphQL + Mongoose + MongoDB를 사용하여 데이터베이스에서 여러 CRUD 작업을 "수행"합니다.

내가하려고하는 작업 중 하나는 데이터베이스에서 사이트를 가져 와서 다음과 같이 각 레코드에 대한 정보로 사용자를 확장하는 것입니다.

query {
    getSites {
        id
        name
        owner {
            name
            email
        }
        origins
    }
}

대신 다음과 같은 결과가 나타납니다.

{
    "data": {
        "getSites": [{
                "id": "5cae36182ab9b94e94ba9af5",
                "name": "Test site 1",
                "owner": [{
                        "name": null,
                        "email": null
                    }
                ],
                "origins": [
                    "test1",
                    "test2"
                ]
            }, {
                "id": "5cae3a3798c302247c036544",
                "name": "Test site 2",
                "owner": [{
                        "name": null,
                        "email": null
                    }
                ],
                "origins": [
                    "test1",
                    "test2"
                ]
            }
        ]
    }
}

이것은사이트에 대한 나의typeDef코드입니다 :

import { gql } from 'apollo-server-express';
const site = gql `
    extend type Site {
        id: ID!
        name: String!
        origins: [String]
        owner: [User]
        createdOn: String
        updatedOn: String
    }
    extend type Query {
        getSites: [Site]
        getSite(id: ID!): Site
    }
    extend type Mutation {
        addSite(name: String!, owner: [String!], origins: [String]): Site
    }
`;
export default site;

내가 console.log(sites) 경우  owner는 문자열 배열입니다.

수정:

addSite(name: String!, owner: [User], origins: [String]): Site 를 바꾸면  컴파일 할 때 얻는다 :

Error: The type of Mutation.addSite(owner:) must be Input Type but got: [User]

리졸버는 다음과 같습니다 :

getSites: async () => await Site.find().exec()

오늘날 관계를 정의하는 올바른 방법은 무엇입니까? 감사합니다.

  • 답변 # 1

    방금 해결 프로그램을 다음과 같이 편집했습니다 :

    getSites: async () => {
        let sites = await Site.find().exec();
        let ownedSites = await User.populate(sites, { path: 'owner' });
        return ownedSites;
    }
    
    

    그러면 오류가 해결되었습니다.

관련 자료

  • 이전 python - CSV 파일에 쓸 때 목록에서 적절한 데이터를 선택하는 방법은 무엇입니까?
  • 다음 android - Espresso로 버튼을 클릭 할 수 없는지 확인