gpt4 book ai didi

javascript - sequelize.js - GetSomething() 在 hasOne 关系中返回错误值,但在 BelongTo 中返回正确值

转载 作者:行者123 更新时间:2023-12-03 22:24:56 25 4
gpt4 key购买 nike

我试图通过我的 Fluxo 中的关系获取 CanaisCadastroGetFluxo() 返回错误的行。
如果我在 findOne 中使用外键返回正确的值。

async getFluxo(widgetId = 1){
let canal = await CanaisCadastro.findOne({where: {id_canal_cadastro: widgetId}});
let fluxo = await canal.getFluxo();
let fluxo2 = await Fluxo.findOne({where: {id_fluxo: canal.id_fluxo}})
console.log(
canal.id_fluxo, // 8 Value that i wan't
fluxo.id_fluxo, // 1 wrong value from GetFluxo
fluxo2.id_fluxo, // 8 Correct value from findOne
);
}
更新
如果我将 .hasOne 替换为 .belongsTo 工作正常,但我不明白为什么。
Documentation 说两者实际上是一样的:
BelongsTo
HasOne
CanaisCadastro.js:
const { Sequelize, DataTypes, Model } = require('sequelize');
const sequelize = require('../../config/database');
const Fluxo = require('./Fluxo');

class CanaisCadastro extends Model{}

CanaisCadastro.init({
id_canal_cadastro:{
type:Sequelize.BIGINT,
allowNull:false,
primaryKey:true,
autoIncrement:true
},
descricao_canal:{
type:Sequelize.STRING,
allowNull:false,
},
id_canal:{
type:Sequelize.BIGINT,
allowNull:false
},
id_empresa:{
type:Sequelize.BIGINT,
allowNull:false
},
id_fluxo:{
type:Sequelize.BIGINT,
allowNull:false,
references: Fluxo,

},


},{
sequelize,
modelName:"canais_cadastro",
freezeTableName:true,
timestamps:false,
force:false
})
CanaisCadastro.hasOne(Fluxo, {foreignKey: 'id_fluxo'}); // return wrong values
CanaisCadastro.belongsTo(Fluxo, {foreignKey: 'id_fluxo'}); // Works fine
Fluxo.hasMany(CanaisCadastro, {foreignKey: 'id_fluxo'});
module.exports = CanaisCadastro;
Fluxo.js:
const { Sequelize, DataTypes, Model } = require('sequelize');
const sequelize = require('../../config/database');
class Fluxo extends Model{}

Fluxo.init({
id_fluxo:{
type:Sequelize.BIGINT,
allowNull:false,
primaryKey:true,
autoIncrement:true
},
descricao:{
type:Sequelize.STRING,
allowNull:false,
},
id_status:{
type:Sequelize.BIGINT,
allowNull:false
},
tipo:{
type:Sequelize.ENUM('Padrão', 'Dialogflow'),
allowNull:false
},

},{
sequelize,
modelName:"fluxo",
freezeTableName:true,
timestamps:false,
force:false
})

module.exports = Fluxo;

最佳答案

因为 CanaisCadastro 使用字段 Fluxo 有一个指向 id_fluxo 的链接,这意味着就 Sequelize 而言 CanaisCadastro 属于 Fluxo,即依赖于它。
请记住,它们之间的关联应该是:

CanaisCadastro.belongsTo(Fluxo, {foreignKey: 'id_fluxo'});
Fluxo.hasMany(CanaisCadastro, {foreignKey: 'id_fluxo'});

关于javascript - sequelize.js - GetSomething() 在 hasOne 关系中返回错误值,但在 BelongTo 中返回正确值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65025732/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com