Как я могу запросить определенное поле в loopback 4 через хранилище? - PullRequest
2 голосов
/ 06 мая 2019

Я хочу обеспечить уникальность, поэтому я хотел бы посмотреть, есть ли какие-либо другие электронные письма и имена пользователей, которые аналогичны тем, которые были опубликованы на этом маршруте.Как мне сделать это через репозиторий, он продолжает спрашивать о фильтре, который я вижу, но не могу разобраться с ним.

@post('/users', {
    responses: {
      '200': {
        description: 'User model instance',
        content: {'application/json': {schema: {'x-ts-type': User}}},
      },
    },
  })
  async create(@requestBody() user: User): Promise<User> {
    //check : User= await this.userRepository.create(user);
    //@param.query.object('filter', getFilterSchemaFor(User)) filter?: Filter;
    // var check:any=await this.userRepository.find(filter);
    //filter: Filter;
    var check: User = await this.userRepository.find({email:user.email});
    var isNotPresent: boolean = true;
    // check.forEach(function(val){

    // });
    // if(isNotPresent)
    return await this.userRepository.create(user);
  }

1 Ответ

4 голосов
/ 06 мая 2019

Объект Filter имеет следующие свойства, которые можно использовать для определения запроса и его ответа:

  1. where: используется для определения запроса.В вашем случае вы хотели бы найти существующих пользователей с тем же адресом электронной почты и именем пользователя, которые указаны в теле запроса.
  2. fields: для указания полей, которые вы хотели бы включить или исключить в ответе на ваш запрос.Каждый объект в массиве, возвращаемый find(), будет иметь только те поля, которые установлены в true в fields объекте.
  3. offset, skip, limit и order: используется для нумерации страниц.

Итак, в вашем случае, если у пользователя есть «электронная почта»'и' username ', объект фильтра будет выглядеть следующим образом:

const filter: Filter = {
    where: {
        'email': user.email,
        'username': user.username
    },
    fields: {
        email: true,
        username: true
    },
    offset: 0,
    limit: 10,
    skip: 0,
    order: [],
};

А ваш вызов метода репозитория будет выглядеть следующим образом:

var check: User = await this.userRepository.find(filter);

Мой первый SOответ.Надеюсь, это поможет.

...