замените поле ObjectId пользовательской строкой для ObjectIdColumn в TypeORM / MongoDB - PullRequest
2 голосов
/ 18 февраля 2020

У меня есть NEST Js REST API и я использую TypeORM с MongoDB. Я хочу создать сущность с именем project. Я начал с базового c объекта и только что прочитал, что должен использовать ObjectIdColumn вместо PrimaryColumn для MongoDB.

@Entity()
export class Project extends BaseEntity {
  // The technical project name
  @ObjectIdColumn({ generated: false })
  public id: ObjectID;

  // The display name
  @Column({ unique: true })
  public name: string;

  // The project successor
  @Column({ nullable: true })
  public successorId: ObjectID;

  // Configuration stuff for that project
  @Column()
  public configuration: object;
}

Я хотел бы знать, возможно ли заменить этот идентификатор объекта столбец с основным столбцом типа строка. Поле id основано на специальном шаблоне, например, поле имени

мой удивительный проект

приведет к

my -awesome-project

для поля id. Конечно, я использовал generated: false, но я должен передать пользовательскую строку вместо ObjectID. В настоящее время это невозможно, поскольку в документах указано, что ObjectID

Может быть 24-байтовой шестнадцатеричной строкой, 12-байтовой двоичной строкой или числом. http://mongodb.github.io/node-mongodb-native/2.1/api/ObjectID.html

Итак, что нужно сделать, чтобы использовать пользовательскую строку в качестве поля идентификатора? Единственное, о чем я могу думать, - это создать второе поле, например, theRealId, обработать его как поле идентификатора и игнорировать автоматически сгенерированный ObjectId ...

...