我使用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
}]
}]
答案 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'});