'How to save a nested object using typeorm and Nestjs?

I have the following Data entity:

@PrimaryGeneratedColumn() 
id: number 

@Column() 
dataA: string 

@Column() 
dataB: string 

@Column() 
dataC: number

@Column() 
dataD: number

The data object I am trying to save:

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

I then try to save it as follows:

await this.dataRepository.save(data)

I get an error that says something about dataB and dataC not being a part of Data entity even though it should be. Thanks.



Solution 1:[1]

You need to flatten it, write a function to do that before passing object into the 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));

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Pete Houston