Sequelize.js X与Y不关联

Sequelize.js X与Y不关联,sequelize.js,Sequelize.js,我一直在关注sequelize的文档,当我谈到关系时遇到了一个问题。下面是我非常简单的代码,使用belongsTo import Sequelize, { STRING, INTEGER, TEXT } from 'sequelize'; const sequelize = new Sequelize('dbname', '', ''); const User = sequelize.define('user', { name: STRING, age: INTEGER })

我一直在关注sequelize的文档,当我谈到关系时遇到了一个问题。下面是我非常简单的代码,使用
belongsTo

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!

Sequelize与互惠关系一起工作

因此,如果您想让
项属于用户
,您可能还想让
用户拥有一个项

在您的情况下,您有关联的用户到项目,但没有项目到用户。因此,让我们通过添加:

Item.belongsTo(User);
User.hasOne(Item); // this line
现在Sequelize知道每个用户都有一个条目,这可以让我们有机会进行
JOIN
查询

库处理关联属性的方式是通过表名。因此,在您的情况下,您还需要将
项目
重命名为
项目
,如下所示:

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

谢谢,我没有意识到“物品->物品”的事情,并且开始滥用别名。Sequelize正在变得惊人。