sequelize填充关系查询表

nbnkbykc  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(340)

我在sequelize中有以下两个表格

const Tokens = sequelize.define("Tokens", {
    id: {
        type: DataTypes.UUID,
        defaultValue: DataTypes.UUIDV4,
        primaryKey: true
    },
    active: {
        type: DataTypes.BOOLEAN
    }
});

const User = sequelize.define("Users", {
    id: {
        type: DataTypes.UUID,
        defaultValue: DataTypes.UUIDV4,
        primaryKey: true
    },
    first_name: {
        type: DataTypes.STRING
    }
});

User.associate = models => {
    models["Users"].hasMany(models["Tokens"], {foreignKey: 'userID', as: 'tokens_userid'});
};

我正在sequelize中尝试运行以下查询。

const token = await db.Tokens.findOne({
    where: {
        id,
        active: true
    },
    include: ["tokens_userid"]
});

但我得到以下错误。

Error: Association with alias "tokens_userid" does not exists

我的主要目标是基于令牌id获取用户。现在我只想将该关联移动到用户表,但问题是,稍后我将希望获取给定用户id的所有令牌。因此,无论哪种方式,我都会遇到此问题。
我尝试添加以下行,但它抱怨循环关系或类似的东西。

models["Tokens"].hasOne(models["User"], {foreignKey: 'userID', as: 'tokens_userid'});

如何查询users或tokens表并用关系正确填充它?

yws3nbqq

yws3nbqq1#

我可以通过在表中添加以下行来解决这个问题。

models["Tokens"].belongsTo(models["User"], {foreignKey: 'userID', as: 'tokens_userid_from_token'});

基本上是我以前试过但改变了 hasOnebelongsTo .
希望这能帮助其他人。

相关问题