bookshelf.js を使用して多対多の関係を構築できません。
モデル:
var Event = bookshelf.Model.extend({
tableName: 'events',
idAttribute: 'event_id',
tags: function() {
return this.belongsToMany(Tag, 'events_tags', 'event_id', 'tag_id');
}
});
var Tag = bookshelf.Model.extend({
tableName: 'tags',
idAttribute: 'tag_id',
events: function() {
return this.belongsToMany(Event, 'events_tags', 'tag_id', 'event_id');
}
});
データベース テーブル「イベント」:
event_id name
-------------------------------------------------
1 party at my place
データベーステーブル「タグ」:
tag_id name
---------------------------
1 music
データベース テーブル "events_tags":
event_tag_id event_id tag_id
-------------------------------------------------------------
1 1 1
本来あるべきものを返さないクエリ:
new db.Event()
.fetchAll({withRelated: ['tags']})
.then(function(events) {
console.log(events.toJSON());
});
ログ出力:
[{'event_id': 1, 'name': 'party at my place', 'tags': []}]
つまり、タグの空の配列です。これは間違っています。
質問: 私のコードに問題はありますか? 目的の出力は次のようになります。
[{
'event_id': 1, 'name': 'party at my place',
'tags': [{'tagId':1, 'name':'music'}]
}]
これは質問には役に立ちませんが、とにかく投げます: 私は現在、Node JS のすべての ORM を嫌っています! たぶん、クエリビルダーを使用する必要があります。