我怎样才能从3个Bookshelf.js模型的数据在一个查询
问题描述:
我有3个表:User
,UserDrink
,并VenueDrink
我怎样才能从3个Bookshelf.js模型的数据在一个查询
这里是我的样本数据
User
id | name | gender |
--------------------
1 | John | male |
2 | Jane | female |
UserDrink
id | count | user_id | venue_drink_id
1 | 3 | 1 | 1
2 | 5 | 1 | 2
3 | 2 | 2 | 2
VenueDrink
id | name | price
1 | Beer | 50
2 | Wine | 100
我怎样可以得到以下当我查询单个User
时,使用BookshelfJs
返回?
{
"id":1,
"name":"John",
"gender":"male",
"user_drinks":[
{
"id":1,
"count":3,
"user_id":1,
"venue_drink":{
"id":1,
"name":"Beer",
"price":50
}
},
{
"id":2,
"count":5,
"user_id":1,
"venue_drink":{
"id":2,
"name":"Wine",
"price":100
}
}
]
}
我试过几次尝试,但我是新来的BookshelfJs
,不幸的是,我只能上去使用withRelated
和hasMany
关系UserDrink
水平。 我只能输出如下:
{
"id":1,
"name":"John",
"gender":"male",
"user_drinks":[
{
"id":1,
"count":3,
"user_id":1,
"venue_drink_id":1
},
{
"id":2,
"count":5,
"user_id":1,
"venue_drink_id":2
}
]
}
我需要输出venue_drink
的使用venue_drink_id
细节。 在此先感谢。
答
如下
var user = db.Model.extend({
tableName: 'users',
hasTimestamps: false,
drinks: function() {
return this.hasMany(UserDrink, 'user_id');
}
});
var UserDrink = db.Model.extend({
tableName: 'UserDrink',
hasTimestamps: false,
venueDrink: function() {
return this.belongsTo(VenueDrink, 'venue_drink_id');
}
userRelated : function() {
return this.belongsTo(user,'user_id');
}
});
var VenueDrink = db.Model.extend({
tableName: 'VenueDrink',
hasTimestamps: false
});
user.where({
id: 1
}).fetchAll({
withRelated: ['drinks.venueDrink', 'drinks.userRelated']
}).then(function(data) {
data = data.toJSON();
res.send(data);
});
您可以获取所需的结果所以,我正在寻找的是'drinks.venueDrink'!非常感谢,我进行了为期2天的研究。 :d – Erick