2017-06-12 2 views
0

Ich habe folgende Modelle:Wie hole ich alle Zeilen eines Modells mit seinen Beziehungen?

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) 
}; 

Meine Datenbank-Tabellen sind wie folgt aus:

Benutzer: id , Name, Benutzername, role_id Rolle: ID, Beschreibung

Ich brauche alle Benutzer mit ihren Rollen (id und Beschreibung) zu bekommen, dann habe ich versucht, dies zu tun:

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

Aber alles, was ich bekommen, ist dies:

{ 
    "error": "{}" 
} 

Was falsch ist mit meinem Code?

Antwort

0

Ich habe die Antwort gefunden:

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}); 
      }); 
Verwandte Themen