如何在 Sequelize 中设置关联

How to set the associations in Sequelize

我有两个模型,定义在这里:

用户模型:

var Sequelize = require("sequelize");
module.exports = function (sequelize) {
    var User = sequelize.define('user', {
        name:{ type:Sequelize.STRING(50), defaultValue:''},
        email:Sequelize.STRING(50),
        password:Sequelize.STRING(256)
    },
    {
        associate: function (models) {
            User.hasMany(
                models.Article,
                { foreignKey: 'postUserId' }
            );
            User.hasMany(
                models.Article,
                { foreignKey: 'editUserId' }
            );
            User.hasMany(
                models.Article,
                { foreignKey: 'deleteUserId' }
            );
        }
    });

    return User;
};

文章模型:

module.exports = function (sequelize, DataTypes) {
    var Article = sequelize.define('Article', {
        title: {type: DataTypes.STRING, defaultValue: '' },
        content: { type: DataTypes.STRING, defaultValue: '' }
    },
    {
        associate: function (models) {
            Article.belongsTo(
                models.User,
                { foreignKey: 'postUserId' }
            );
            Article.belongsTo(
                models.User,
                { foreignKey: 'editUserId' }
            );
            Article.belongsTo(
                models.User,
                { foreignKey: 'deleteUserId' }
            );
        }
    });

    return Article;
};

在我的 table 中,每条记录都有三个 userid 引用模型用户。我想获取每条记录中的所有三个用户数据。 我如何定义关联以及如何编写 find 函数。

db.Article.findById('9100', {include: [User]}).then(function (art) {
    if (!art) {
        return res.status(404).send({
            message: 'No article with that identifier has been found'
        });
    }
    res.json(art);
}).catch(function (err) {
    return res.status(400).send({
        message: errorHandler.getErrorMessage(err)
    });
});

以上方法只能return一个User Data,如何return所有User Data?

谢谢。

如果多次关联相同的模型,则必须在关联中使用'as' 属性。

associate: function (models) {
            User.hasMany(
                as:'PostArticles',
                models.Article,
                { foreignKey: 'postUserId' }
            );
            User.hasMany(
                models.Article,
                as:'EditArticles',
                { foreignKey: 'editUserId' }
            );
            User.hasMany(
                models.Article,
                as:'DeleteArticles',
                { foreignKey: 'deleteUserId' }
            );
        }

更多:http://docs.sequelizejs.com/en/latest/docs/associations/