NestJS + Mongoose + GraphQL: «заполнить» не работает - PullRequest
0 голосов
/ 02 ноября 2019

спасибо за отличный фреймворк!

Я использую mongoose с GraphQL и имею следующую проблему:

Если я хочу разрешить ObjectID, хранящиеся в массиве «аргументы» пользователя с помощьюpopulate, в GraphQL я получаю пользователя с пустым массивом аргументов в качестве ответа.

Я подозреваю ошибку при определении ссылки ArgumentSchema (имя схемы MongoDB) или заполнителя arguments (имяатрибутов пользователя). Как это работает правильно?

arguments.schema

export const ArgumentSchema = new mongoose.Schema({
  argument: { type: String, required: true },
  userId: { type: String, required: true },
  username: { type: String, required: true },
});

user.schema

export const UserSchema = new mongoose.Schema({
  username: { type: String, required: true },
  email: { type: String, required: true },
  age: { type: Number, required: true },
  arguments: { type: [mongoose.Schema.Types.ObjectId], required: false, ref: 'ArgumentSchema' },
});

arguments.model

@ObjectType()
export class ArgumentGQL {
  @Field(() => ID)
  readonly _id: string;

  @Field()
  readonly argument: string;

  @Field()
  readonly userId: string;

  @Field()
  readonly username: string;
}

user.model

@ObjectType()
export class UserGQL {
  @Field(() => ID)
  readonly _id: string;

  @Field()
  readonly username: string;

  @Field()
  readonly email: string;

  @Field()
  readonly age: number;

  @Field(() => [ArgumentGQL], { nullable: true })
  readonly arguments: ArgumentGQL[];
}

user.service

async getOne(id: string): Promise<UserGQL> {
    try {
      return await this.userModel.findById(id).populate('arguments').exec();
    } catch (e) {
      throw new BadRequestException(e);
    }
  }

Пример запроса GraphlQL

query {
  getUser(id: "5dbcaf9f5ba1eb2de93a9301") {
      _id,
      username,
      email,
      age,
      arguments {
          argument,
          username
      }
  }
}

Мне кажется, я еще не понял чего-то фундаментального ...

Буду благодарен за любую помощь! Приветствия

1 Ответ

0 голосов
/ 03 ноября 2019

Я думаю, проблема в том, как вы определили user.schema. Как уже упоминалось здесь , вы пробовали это?

{
 arguments: [{ type: [mongoose.Schema.Types.ObjectId], , ref: 'ArgumentSchema' }],
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...