我有两个模型,定义在这里:
用户模型:
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;
};
在我的表中,每条记录都有三个用户标识引用模型用户。我想获得每条记录中的所有三个用户数据。 如何定义关联以及如何编写查找函数。
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)
});
});
以上方法只能返回一个用户数据,如何返回所有用户数据?
THX。
答案 0 :(得分:1)
如果您多次关联相同的模型,则必须在关联中使用“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' }
);
}