Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/391.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 如何一次从多个表中获取书架模型_Javascript_Mysql_Node.js_Bookshelf.js - Fatal编程技术网

Javascript 如何一次从多个表中获取书架模型

Javascript 如何一次从多个表中获取书架模型,javascript,mysql,node.js,bookshelf.js,Javascript,Mysql,Node.js,Bookshelf.js,我正在开发一个node.js web服务,它看起来像一个拍卖。我使用bookshelf.js作为模型,使用MySQL作为数据库。 请考虑以下dB结构: users: id | login | password | users_roles: id | user_id | role_id | roles: id | name | auctions: id | user

我正在开发一个node.js web服务,它看起来像一个拍卖。我使用bookshelf.js作为模型,使用MySQL作为数据库。 请考虑以下dB结构:

users:
id     |     login     |     password     |
users_roles:
id     |     user_id     |     role_id          |
roles:
id      |     name     |
auctions:
id      |     user_id     |     rating_id     |
rating:
id      |     speed     |     quality          |     communication     |
目前我已经实现了如下用户模型:

 var Bookshelf = require('./bookshelf_model'),
    Role = require("./role");

var User = Bookshelf.Model.extend({
        tableName: 'users',

        role: function () {
            return this.belongsToMany(Role, 'users_roles', 'user_id', 'role_id');
        }
    });

module.exports = User;
我可以通过以下方式获取用户详细信息:

User.forge({id: 1}).fetch().then(
      function(userDetails){
          .......
      }
    );
这将从users表返回用户的详细信息。要获得用户角色,我还必须执行另一个db调用,如:

User.forge({id: 1}).role().fetch().then(
      function(userRoleDetails){
          .....
      }
    );
是否有任何方法可以使用bookshelf.js(或使用任何其他方法)一次获取所有用户信息?如果能马上得到这样的东西那就太好了:

user={
 id:...,
 login:...,
 password:...,
 role_id:....,
 rating:/*avg rating from all user's auctions*/

}

试试这样的方法:


返回用户.forge({
身份证号码:1
} )
.fetch({
require:true,//如果找不到,则抛出错误
withRelated:['角色']
} )
.then(函数(用户模型){
return userModel.toJSON();//不需要此步骤,取决于下一步要做什么
} )


差不多吧。这将使用
role
属性将
user\u roles
对象加载到用户中。一些文档

这不是我试图实现的,这解决了角色问题,但更复杂的字段需要做其他事情。我提供了以下解决方案:摆脱书架,将我需要的一切都打包到存储过程中(比如通过登录获取用户详细信息),这允许我在一个SP调用中获取任何信息。非常有效是的,SP是另一种方法。很高兴你成功了!