У меня есть 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 ...