Параметры определения модели Loopback4 для имени коллекции mongodb - PullRequest
0 голосов
/ 14 ноября 2018

Я использую loopback 4 и пытаюсь настроить аннотацию модели со свойствами для настройки создания коллекции в Mongo.

У меня есть модель, которая называется скажем Client, и я хочу, чтобы коллекция в Mongo называлась Clients. Пересечение с документацией сбивает с толку, поскольку они ссылаются на свойства из v3 в v4 docs.

Я пробовал это:

import {Entity, model, property} from '@loopback/repository';

@model({
  settings: {strict: false},
  name: 'client',
  plural: 'clients',
  options: {
    mongodb: {
      collection: 'clients',
    },
  },
})
export class Client extends Entity {
  @property({
    type: 'string',
    id: true,
    defaultFn: 'uuidv4',
    index: true,
  })
  id: string;

  @property({
    type: 'string',
    required: true,
  })
  name: string;

  @property({
    type: 'string',
  })
  code?: string;

  constructor(data?: Partial<Client>) {
    super(data);
  }
}

Без радости, по-прежнему создает коллекцию как имя класса Client

Ответы [ 2 ]

0 голосов
/ 10 декабря 2018

Обратите внимание, что все параметры модели должны быть вложены в свойство settings, LB4 пока не поддерживает настройки верхнего уровня.

Также, насколько я знаю, опция plural не используется LB4,

Я думаю, что следующий код должен работать для вас:

@model({
  name: 'client',
  settings: {
    strict: false
    mongodb: {
      collection: 'clients',
    },
  },
})
export class Client extends Entity {
  // ...
}

ОБНОВЛЕНИЕ: я открыл проблему GitHub, чтобы обсудить, как сделать декоратор @model более простым в использовании для пользователей, приходящих из LB3.Смотри https://github.com/strongloop/loopback-next/issues/2142

0 голосов
/ 15 ноября 2018

Это с 2014 года, но, возможно, все еще работает. Попробуйте не ставить mongodb ключ options

  settings: {strict: false},
  name: 'client',
  plural: 'clients',
  mongodb: {
    collection: 'clients',
  },
...