Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在一次查询中从3个Bookshelf.js模型中获取数据_Javascript_Node.js_Knex.js_Bookshelf.js - Fatal编程技术网

Javascript 如何在一次查询中从3个Bookshelf.js模型中获取数据

Javascript 如何在一次查询中从3个Bookshelf.js模型中获取数据,javascript,node.js,knex.js,bookshelf.js,Javascript,Node.js,Knex.js,Bookshelf.js,我有三个表:User,UserDrink,和VenueDrink 这是我的样本数据 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

我有三个表:
User
UserDrink
,和
VenueDrink

这是我的样本数据

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
当我查询单个
用户时,如何使用
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
升级到
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
    }
  ]
}
我需要使用
场馆饮料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);
});

所以我要找的是
饮料.venueDrink
!非常感谢,伙计,这结束了我两天的研究D