javascript - Sequelize : Creating to-many relationships

标签 javascript mysql node.js sequelize.js

我在 Node 中使用 Sequelize 并有一个表名称 UserAuth:

User 
    id
    name

Auth:
    id
    token

我想向该模型添加关系。

用户可以与Auth拥有多个Auth对多关系。

一个Auth只能有一个用户,与用户一对一关系。

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

tableName: 'User',
            classMethods: {
                associate: function (models) {
                    user.belongsToMany(user, { through: { model: models.auth }, as: `user` })
                }

此代码在 Auth 中创建一个名为 userId 的字段。

我希望得到的是以下内容:

 User 
    id
    name
    auths //an array that will contain all instances of Auth by this User

Auth:
    id
    token
    user //an object of User to whom this Auth object belongs to

我做错了什么?

最佳答案

尝试一下:

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-many 的 Sequelize 文档, hasOne关系和hasMany , hasOne API 了解更多信息。

关于javascript - Sequelize : Creating to-many relationships,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39822393/

相关文章:

javascript - Edge 浏览器中未定义的 PHP Websocket

具有不同初始化方法的 Javascript 数组差异

javascript - Angular ui 路由器 : onEnter function is not firing when new state is entered

mysql - 有没有什么好的方法检测MySQL是 "ready?"

php - 使用 php 和 ajax : 的聊天应用程序

javascript - JS中如何将一个字符串分割成2个字符 block 的数组?

mysql - 插入另一个MySQL后更新表

javascript - req.body 在 Express 应用程序的后路由中未定义

node.js - NodeJS - Mongoose(对象没有方法 "id")

javascript - 为什么node.js没有加载我需要的模块?