2015-09-09 3 views
1

У меня есть две модели:withRelated связывания неопределен

var Book = bookshelf.Model.extend({ 
     tableName: 'books', 
     chapters: function(){ 
      var chapters = require('./chapter').Chapter; 
      return this.hasMany(chapters, 'bookId'); 
     } 
    }); 

    module.exports = { 
     Book: Book 
    }; 

var Chapter = bookshelf.Model.extend({ 
    tableName: 'chapters', 
    hasTimestamps: ['dateCreated', 'dateUpdated'], 

    //relationship 
    book: function(){ 
     var book = require('./user').Book; 
     return this.belongsTo(book, 'bookId'); 
    } 
}); 

module.exports = { 
    Chapter: Chapter 
} 

Я делаю это в одном из контроллера:

new Book.Book() 
       .fetch({withRelated:['chapters']}) 
       .then(function(books){ 
        resolve(books); 
       }).catch(function(err){ 
        reject(err); 
       }); 

The "главы": [], так как журнал отладки дать мне это, привязок не определено:

{ method: 'select', 
    options: {}, 
    bindings: [ 1 ], 
    sql: 'select `books`.* from `books` limit ?' } 
{ method: 'select', 
    options: {}, 
    bindings: [ undefined ], 
    sql: 'select `chapters`.* from `chapters` where `chapters`.`bookId` in (?)' } 

ответ

0

решаемые с его idAttribute: 'cardId' указанного.

+1

Что? У меня есть эта же проблема, не могли бы вы сделать ее более общей? – arg20

2

Книжная полка предполагает, что в каждой таблице имеется столбец с именем 'id', который однозначно идентифицирует каждую строку. Если вы используете первичный ключ, который не называется «id», вам нужно указать, что он вызывается, чтобы иметь возможность использовать модель в отношении. Это делается членом 'idAttribute', например.

var ModelA = bookshelf.Model.extend({ 
    tableName: "ModelA", 
    idAttribute: "modelA_id" 
    ... 
} 

});

http://bookshelfjs.org/#Model-instance-idAttribute

Смежные вопросы