包含在hasMany关联上只返回sequelize nodeJs中的许多结果之一

时间:2018-05-09 10:24:32

标签: node.js express sequelize.js

我使用sequelize ORM作为节点js。包含在hasMany关联上只返回许多结果中的一个。我有2张桌子“album”和“album_tag”。 1:专辑和album_tag之间的M关系。我想获取album_tag表的所有记录,但我不能。我的代码在这里

CODE:

    var Sequelize = require('sequelize');
    var sequelize = new Sequelize('test', 'root', '', {  // configuration  }  });

    const db = {};    
    db.Sequelize = Sequelize;  
    db.sequelize = sequelize;

    db.album = require('./../model/definitions/album')(sequelize, Sequelize);  // col: id, name, status
    db.albumTag = require('./../model/definitions/albumTag')(sequelize, Sequelize);  // col: album_id,tag_id

    db.album.hasMany(db.albumTag, {foreignKey: 'album_id'});
    db.albumTag.removeAttribute('id');    

    db.album.findAll({where: {id: 22},  
      include: [{          
      model: db.albumTag,
      required: true 
    }],        
    }).then(function(result) {
      callback(200,result);
    }).catch(function(error) {
      callback(100,error);
    }).done();

结果是

 [{"id": 22,
   "name": "Test",
   "status": "Active",            
   "album_tag": [{
       "album_id": 22,
       "tag_id": 10
   }]
 }]

但我需要这个结果

[{"id": 22,
  "name": "Test",
  "status": "Active",            
  "album_tag": [{
      "album_id": 22,
      "tag_id": 10
    },{
      "album_id": 22,
      "tag_id": 11
    },{
      "album_id": 22,
      "tag_id": 12
    }]
}]

1 个答案:

答案 0 :(得分:0)

您缺少一个关联。 请添加:

db.albumTag.hasOne(db.album, {foreignKey: 'album_id'});

所以最后它看起来像这样:

db.album.hasMany(db.albumTag, {foreignKey: 'album_id'});
db.albumTag.hasOne(db.album, {foreignKey: 'album_id'});