Sequelize:创建多对多的关系

时间:2016-10-02 22:30:12

标签: javascript mysql node.js sequelize.js

我在节点中使用Sequelize并且有一个表名@JsonIgnoreProperties({"user"}) public Set<SiteAdmin> getSiteAdmins() { return this.siteAdmins; } User

Auth

我想为这个模型添加关系。

User id name Auth: id token User有很多Authto-many的关系。

Auth只能与Auth建立一个Userto-one

我的模型文件中有一个类实例,我用它来创建与以下代码的关系:

User

此代码在tableName: 'User', classMethods: { associate: function (models) { user.belongsToMany(user, { through: { model: models.auth }, as: `user` }) } 中创建一个名为Auth的字段。

我希望得到以下内容:

userId

我做错了什么?

1 个答案:

答案 0 :(得分:1)

尝试一下:

var User = sequelize.define('User', {
    ...
    classMethods: {
        associate: function (models) {
            User.hasMany(models.Auth, {as: 'auths'});
        }
    }
};


var Auth = sequelize.define('Auth', {
    ...
    classMethods: {
        associate: function (models) {
            Auth.belongsTo(models.User, {as: 'user'});
        }
    }
};

这会在userId表格中添加auth列。

要查询它(请注意查询中的include),您也可以反之亦然:

User.findOne({
    include: [Auth]
})

您可能需要查看one-to-manyhasOne关系的续集文档以及hasManyhasOne API以获取更多信息。