2017-06-12 84 views
0

我有以下型號:如何獲取模型的所有行及其關係?

role.js

let bookshelf = require('../config/database'); 

var Role, 
    Roles; 

Role = bookshelf.Model.extend({ 
    tableName: 'roles', 
    users: function() { 
     return this.hasMany('User'); 
    } 
}); 

Roles = bookshelf.Collection.extend({ 
    model: Role 
}); 

module.exports = { 
    Role: bookshelf.model('Role', Role), 
    Roles: bookshelf.collection('Roles', Roles) 
}; 

user.js的

let bookshelf = require('../config/database'); 

var User, 
    Users; 

User = bookshelf.Model.extend({ 
    tableName: 'users', 
    role: function() { 
     return this.hasOne('Role'); 
    } 
}); 

Users = bookshelf.Collection.extend({ 
    model: User 
}); 

module.exports = { 
    User: bookshelf.model('User', User), 
    Users: bookshelf.collection('Users', Users) 
}; 

我的數據庫表是這樣的:

用戶:ID ,名稱,用戶名,role_id 角色:id,說明

我需要得到所有用戶的角色(ID和說明),然後我試着這樣做:

User.where({}) 
      .fetch({withRelated: ['role']}) 
      .then(function(result) { 
       res.json({data: result.toJSON()}); 
      }) 
      .catch(err => { 
       res.json({error: JSON.stringify(err)}); 
      }); 

但我得到的是這樣的:

{ 
    "error": "{}" 
} 

什麼是錯的用我的代碼?

回答

0

我已經找到了答案:

User.forge() 
      .fetchAll({withRelated: ['role']}) 
      .then(function(result) { 
       if (result === null) 
        res.json({data: []}); 
       else 
        res.json({data: result.toJSON()}); 
      }) 
      .catch(err => { 
       res.json({error: err.message}); 
      }); 
相關問題