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.