2017-04-12 54 views
0

由于在将两个模型与Sequelize关联起来的时间很少,所以我正面临一个问题。NodeJS Sequelize - 错误的关系方向

var Ticket = sequelize.define("Ticket", { 

    IDTicketBase: { type:DataTypes.INTEGER, primaryKey: true }, 
    IDStatus: DataTypes.INTEGER, 

    } 

associate: function(models){ 
     models.Ticket.hasOne(models.Status, {foreignKey: 'IDStatus'}); 
} 

var Status = sequelize.define("Status", { 

    IDStatus : { type:DataTypes.INTEGER, primaryKey: true }, 
    Name: DataTypes.STRING 

    } 

    associate: function(models){ 
     models.Status.belongsTo(models.Ticket, {foreignKey: 'IDStatus'}); 
    } 

此代码生成关系Ticket.IDTicketBase = Status.IDStatus。 如果我想要关系Ticket.IDStatus = Status.IDStatus,我必须在我的两个模型上写什么?

我想生产1对1协会。

感谢您的答复;)

回答

0

我要产生1比1的关联。

而你在这里。关系模型中没有1对1的关系。如果你在两个关系中的元组之间有1对1的关系,那么这只是一个关系,而不是两个关系。

在一个关系模型中,通过在第二个关系中包含一个关系的主键来建模一对多关系,并且通过引入包含两个主键的第三关系来建模多关系你想要连接的关系。没有这样的事情是真正的1对1关系。例如,你可能会说你在用户和她的名字之间有一对一的关系,但实际上你只是在用户的关系中包含了这个名字。

+0

好的,我认为它不能是双向的。但我无法弄清楚Ticket.hasOne或Status.belongT之间的哪个指令必须用于为select查询中的jonction产生正确的方向,以使Ticket.IDStatus = Status.IDStatus。我尝试了所有可能的方向,在我的Ticket模型中将'references'属性添加到字段IDStatus,但是我无法实现它的功能。 –