Typeorm:使用 Mongo 数据库为布尔值提供默认值

Sup*_*yan 4 boolean default-value mongodb typeorm

我在 Mongo 数据库中使用 typeorm。我想为具有boolean数据类型的列提供默认值。

我的实体如下所示:

@ObjectIdColumn()
  id: ObjectID;

  @Column()
  name: string;

  @Column()
  startDate: Date;

  @Column()
  endDate: Date;

  @Column()
  inspectionTypeId: string;

  @Column()
  questions: string[];

  @Column('boolean', {default: true})
  isActive: boolean;
Run Code Online (Sandbox Code Playgroud)

但是,当我保存到 repo 中时,isActive不会添加列。

小智 20

你可以这样做:

@Column('boolean', {default: true})
isActive: boolean = true;
Run Code Online (Sandbox Code Playgroud)

如果您不向 isActive 传递值,则为 true;如果您传递值,则为该值。

  • 我目前正在使用 TypeORM v0.2.29 和 postgres 数据库,这个解决方案非常适合我。我知道最初的问题是关于 MongoDB 的,但希望这可以帮助其他偶然发现这个线程的人。 (6认同)

Rom*_*nko 6

事实上,我也遇到过同样的问题。所以我的堆栈是相同的(MongoDB + TypeORM)。我isActive在模型中有相同的字段,我想做的是默认将其设置为“false”。我试图设置“假”,但无法达到目标。

我重读了这部分(https://typeorm.io/#/entities

默认值:字符串 - 添加数据库级列的 DEFAULT 值。

并认为该default选项根本不适用于布尔类型(也许我错了)。

所以为了设置它,我使用了beforeInsert钩子。

  @Column({
    nullable: false,
    select: false,
  })
  isActive: boolean;

  @BeforeInsert()
  beforeInsertActions() {
    this.isActive = false;
  }
Run Code Online (Sandbox Code Playgroud)

关于钩子的更多信息:https : //typeorm.io/#/listeners-and-subscribers


小智 0

尝试这个。

@Column({ type: 'boolean', default: true})
Run Code Online (Sandbox Code Playgroud)