/ / Secuestrar: cómo unirse en claves externas - unirse, claves externas, sequelize.js

Secuela: cómo unir en claves externas - unirse, claves externas, sequelize.js

Estoy usando Sequelize y Node.js, y necesito unir 2 tablas en 2 claves externas,

tableA.hasOne(tableB, { foreignKey: "fk_tableB" });
tableB.belongsTo(tableA, {foreignKey: "fk_tableB" });

(por cierto, no entiendo la funcionalidad de "targetKey") pero solo puedo obtener una unión en tableA.primaryKey = tableB.fk_tableB. ¿Cómo puedo reemplazar la tableA.primaryKey por tableA.fk_tableA?

También intenté definir dos veces la tabla A: en 2 estructuras diferentes (una con la clave principal real y la otra con fk_tableA como clave principal), pero tampoco funciona (porque necesito el modo de tabla real en otro lugar).

¿Alguien tiene una idea? ¿Es un error de Sequelize?

Respuestas

0 para la respuesta № 1

¿Cómo puedo reemplazar la tableA.primaryKey por tableA.fk_tableA?

No hay tablaA.fk_tableA. Pero si lo hubiera, esperaríamos que lo hayas llamado así porque la columna tableA.fk_tableA es un FK a una columna clave en tableA. Porque esa es la convención para nombrar una columna fk_tableA. Del mismo modo, esperaríamos una propiedad como la suya que agrega una columna que es un FK a la tablaA PK para llamarlo fk_tableA, no fk_tableB. Al igual que hasOne le da a tableA una columna fk_tableB para la tablaB PK. (Si quieres que un FK esté en alguna otra columna que no sea la PK, entonces dilo a través de targetKey).

Si nombró FK después de su tabla de destino, parece que desea tableA.fk_tableB = tableB.fk_tableA. La forma en que los has nombrado ahora, parece que quieres tableA.fk_tableB = tableB.fk_tableB.

Necesito unir 2 tablas en 2 claves externas

Es extremadamente improbable que necesitas la unión de arriba. Declarar que una columna es un FK dice que un valor de la columna de origen / referencia es siempre un valor de la columna de destino / referenciada. Aquí los objetivos son PKs. Una combinación de este tipo en un FK a una tabla y un FK a otra tabla solo devolverá las filas que comparten el mismo valor de PK, aunque las PK sean de tablas diferentes.