less than 1 minute read

graphql-compose-mongoose mongooseResolver

middleware 쓰듯

mongoose 모델 컨버팅 시 composeMongoose 사용

composeMongoose 로 컨버팅된 modeld 은 여러 메서드 제공

createOne, updateOne 같은 메서드로 원하는 Document CRUD 가능

wrapResolve 를 통해 실행 전의 Resolver 접근 가능

미들웨어 방식과 매우 비슷

import { pick } from 'lodash';

import { UserModelTC } from '../';

// resolver 이름
const name = 'join';
export const resolver = UserModelTC.mongooseResolvers
  .createOne()
  // wrapResolver 로 중간 단계 접근
  .wrapResolve((next) => async (rp) => {
    // graphQL 매개변수 접근
    const args = rp.args;

    args.record = {
      ...pick(args.record, [
        'kakaoId',
        'appleId',
        'name',
        'email',
        'cellPhone',
        'nick',
        'profileImageUrl',
        'password',
        'type',
        'metaData',
        'address',
        'birth',
        'marketingCheck',
        'emailId',
      ]),
      status: UserStatus.Active,
      gender: gender,
    };
    // next 로 다음 다음 단계 이행
    return next(rp);
  });

// initializer
export const init = () => {
  return {
    [name]: resolver,
  };
};