es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

La relación Uno a Uno no está funcionando en TypeORM.

Tengo dos modelos que se relacionan con una relación uno a uno.

@Entity()
class Restaurant {

<pre><code>@PrimaryGeneratedColumn()
id: number;

@Column({
    type: 'varchar',
    length: 1000,
    unique: true
})
name: string;

@Column()
@OneToOne(() => RestaurantType)
@JoinColumn()
restaurantType: RestaurantType;
</code></pre>

<p>}
<code>
</code>
@Entity()
class RestaurantType {</p>

<pre><code>@PrimaryGeneratedColumn()
id: number;

@Column({nullable: false})
resturantType: string;

@Column({
    type: 'time with time zone', 
    default: Date.now()
})
createdAt: Date;
</code></pre>

<p>}
<code>
Pero estoy viendo este error al ejecutar el servidor,
</code>
DataTypeNotSupportedError: El tipo de datos "RestaurantType" en "Restaurant.restaurantType" no es compatible con la base de datos "postgres".

¿Por qué sucede esto?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Este error está ocurriendo porque el tipo de datos “RestauranteTipo” no es compatible con la base de datos Postgres. Cuando se define una relación uno a uno entre dos modelos utilizando TypeORM, se hace uso de claves foráneas para establecer la relación. En este caso, la clave foránea es la columna “restauranteTipo” en el modelo “Restaurante”, que está haciendo referencia al modelo “RestauranteTipo”. Sin embargo, dado que “RestauranteTipo” no es un tipo de datos válido en Postgres, se produce este error.

    Para solucionar este error, podemos cambiar el tipo de datos de la columna “restauranteTipo” a un tipo de datos apropiado en Postgres, como integer o bigint, que se puede utilizar como clave foránea. Otra opción es utilizar un tipo de datos personalizado y definirlo en la base de datos Postgres utilizando una migración o mediante la alteración de la tabla manualmente.

Comments are closed.