从与Sequelize.js关联的表中获取值

从与Sequelize.js关联的表中获取值,sequelize.js,Sequelize.js,我有一个典型的SQL连接问题-填充了比赛数据,无法获得位于另一个表中的主客场球队的名称 team table match table =========== ================================ tid= name mid= date =home_team=away_team ============= ================================ 01 = denver 01 =10

我有一个典型的SQL连接问题-填充了比赛数据,无法获得位于另一个表中的主客场球队的名称

team table               match table
===========     ================================
tid= name       mid=   date =home_team=away_team
=============   ================================
01 = denver     01 =10.11.13 =   01    =   04
02 = minesota   02 =11.11.13 =   02    =   03
03 = orlando    03 =11.11.13 =   04    =   02
04 = portland   04 =12.11.13 =   03    =   01
正如我在创建
As:'Home
As:'Away
后从文档中了解到的,我收到了一些 能手和二传手喜欢
Match.getHome
,但我很困惑。我怎么用呢

var Team = sequelize.define('Team', { ... });
var Match = sequelize.define('Match',{ .. });

Team.hasOne(Match, {foreignKey: 'home_team', as: 'Home'})
Team.hasOne(Match, {foreignKey: 'away_team', as: 'Away'});

问题在于你的关系。您只定义了从一个队到另一个队的关联,但现在您想从另一个队到另一个队。这意味着您必须:

Match.find({where: {id: 1}}).success(function(match) {
    console.log(match);
});
之后你就可以做了

Match.belongsTo(Team, {foreignKey: 'home_team', as: 'Home'});
Match.belongsTo(Team, {foreignKey: 'away_team', as: 'Away'});
或者您可以使用即时加载:

Match.find({where: {mid: 1}}).success(function(match) {
    match.getHome().success(function(home_team) {

    });
});
如果你想同时拥有主客场球队:

Match.find({
    where: { mid: 1 }, 
    include: [
        { model: Team, as: 'Home'}
    ]
}).success(function(match) {
    // Here you can access the home team data in match.home
});

谢谢。我对所有这些都感到非常困惑。hasOne()和
。belongsTo()
你不是唯一一个,我们经常会收到关于这些的问题。文档中有一个要做的事情,以使关联的类型更清楚,如果你想,你可以在那里添加你的声音(我是续集维护者,这就是为什么我非常了解关联:))我不确定你最后的评论是什么意思?也许你能用你想要达到的结果更新你的问题吗?完美的答案,我几乎放弃了和这个节目相关的表格,谢谢
Match.find({
    where: { mid: 1 }, 
    include: [
        { model: Team, as: 'Home'}
        { model: Team, as: 'Away'}
    ]
}).success(function(match) {
    // Here you can access the home team data in match.home and away team in match.away
});