gpt4 book ai didi

sequelize.js - X 与 Y 无关

转载 作者:行者123 更新时间:2023-12-01 08:51:31 26 4
gpt4 key购买 nike

我一直在大量关注 sequelize 的文档,但在处理关系时遇到了问题。这是我使用 belongsTo

创建两个非常基本的 1:1 关系的非常简单的代码
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 处理互惠关系。

因此,如果您想让 Items 属于 User,您可能也希望 User 拥有一个 Item

在您的情况下,您将用户关联到项目,但没有将项目关联到用户。所以让我们添加:

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

现在 Sequelize 知道每个用户都有一个 Item,这可以让我们有机会进行 JOIN 查询。

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

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

关于sequelize.js - X 与 Y 无关,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40682025/

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