2016-11-18 46 views
2

我一直在关注很多重复续集的文档,并且在遇到关系时遇到了问题。这是我非常简单的代码创建了两个非常基本的1:1个关系中使用belongsToX与Y没有关联

import Sequelize, { STRING, INTEGER, TEXT } from 'sequelize'; 

const sequelize = new Sequelize('dbname', '', ''); 

const User = sequelize.define('user', { 
    name: STRING, 
    age: INTEGER 
}); 

const Item = sequelize.define('item', { 
    name: STRING, 
    price: INTEGER 
}); 

Item.belongsTo(User); 

sequelize.sync({ force: true }).then(() => { 
    User.create({ 
     name: 'Hobbyist', 
     age: 22, 
     Item: { 
      name: 'Phone', 
      price: 199 
     } 
    }, { 
     include: [ Item ] 
    }); 
}); 

错误,那是我得到:

Unhandled rejection Error: item is not associated to user! 

回答

5

Sequelize可与互惠关系。

所以,如果你想有Items belong to User你可能想要有User has one Item以及。

在你的情况下,你有关联的用户到项目,但没有项目到用户。因此,让我们加入做到这一点:

Item.belongsTo(User); 
User.hasOne(Item); // this line 

现在Sequelize知道每个用户都有一个项目,它可以让我们有机会做出JOIN查询。

库处理关联属性的方式是表名称。所以你的情况,你也将需要重命名Itemitem,像这样:

User.create({ 
    name: 'Hobbyist', 
    age: 22, 
    item: { 
//^item, not Items 
     name: 'Phone', 
     price: 199 
    } 
}, { 
    include: [ Item ] 
}); 
+0

谢谢,我是不知道的“项目 - >项目”的事情,并开始滥用别名Sequelize变得。惊人。 – Hobbyist

相关问题