Включить в ассоциацию hasMany, возвращая только один из многих результатов в sequelize nodeJs - PullRequest
0 голосов
/ 09 мая 2018

Я использую sequelize ORM для узла js. Включите в ассоциацию hasMany только один из множества результатов. У меня есть 2 таблицы "album" и "album_tag". 1: M отношение между album и album_tag. Я пытаюсь получить все записи для таблицы album_tag, но не могу. мой код здесь

КОД:

    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 голосов
/ 09 мая 2018

Вам не хватает одной ассоциации. Пожалуйста, добавьте это:

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

Итак, в конце это выглядит так:

db.album.hasMany(db.albumTag, {foreignKey: 'album_id'});
db.albumTag.hasOne(db.album, {foreignKey: 'album_id'});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...