如何使用typeorm和Nestjs保存嵌套对象?

问题描述 投票:0回答:2

我有以下数据实体:

@PrimaryGeneratedColumn() 
id: number 

@Column() 
dataA: string 

@Column() 
dataB: string 

@Column() 
dataC: number

@Column() 
dataD: number

我试图保存的数据对象:

const data = {
      dataA: "data 1",
      nestedData: {
        dataB: "data 2",
        dataC: 3
      },
      dataD: 4
      }

然后我尝试按如下方式保存它:

await this.dataRepository.save(data)

我收到一个错误,指出 dataB 和 dataC 不属于数据实体的一部分,尽管它应该是。谢谢。

typescript postgresql nestjs typeorm
2个回答
3
投票

您需要将其展平,在将对象传递到

Repository
之前编写一个函数来执行此操作。

export function flattenData(data) {
    return {
        dataA: data.dataA,
        dataB: data.nestedData.dataB,
        dataC: data.nestedData.dataC,
        dataD: data.dataD,
    }
}

// then pass into Repository
await this.dataRepository.save(flattenData(data));

0
投票

列类型有一个“json”类型: https://typeorm.io/entities#column-types-for-mysql--mariadb

然后你可以写类似的东西

@Column({ 类型: 'json' }) 资源:{ 标题:字符串;参考:字符串}[];

© www.soinside.com 2019 - 2024. All rights reserved.