`repository.create`去除既是数组又是嵌入式对象的列的值

时间:2019-02-21 20:31:55

标签: node.js mongodb typescript nestjs typeorm

给出一个简单的Foo实体,该实体又在mongodb中包含Bar个对象的集合

仅当列既是数组又是嵌入式对象时才出现问题。

@Entity()
export class Foo {
  @ObjectIdColumn()
  public id: ObjectID;

  @Column()
  public simple: string;

  @Column(type => Bar)
  public collection: Bar[];
}

export class Bar {
  @Column()
  value: boolean;
}

repository.create转换原始值

{
  "simple": "string",
  "collection": [
    { "value": true },
    { "value": false }
  ]
}

简单地

{ "simple": "string" }

我刚刚从https://github.com/typeorm/typeorm/issues/2342那里拿走了,但同样的事情也在我端上发生

1 个答案:

答案 0 :(得分:1)

显然,这是typeorm中的bug。解决方法是,您可以手动设置集合,直到问题解决为止:

async createFoo(createFooDto) {
  const newFoo = await this.repository.create(createFooDto);
  // TODO: Remove when https://github.com/typeorm/typeorm/issues/1980 is solved
  newFoo.collection = createFooDto.collection;
  this.repository.save(newFoo);
}

如果这是一种回归分析(曾经起作用),则可以尝试将typeor降级,直到修复为止。