2016-08-18 3 views
0

Предполагая простые отношения «один ко многим», например.Как получить только связанные данные?

const Blog = Bookshelf.Model.extend({ 
    tableName: 'blog', 
    posts: function() { 
    return this.hasMany(Post); 
    } 
}); 

const Post = Bookshelf.Model.extend({ 
    tableName: 'post', 
    blog: function() { 
    return this.belongsTo(Blog) 
    } 
}); 

Как получить все сообщения определенной записи в блоге без получения записи в блоге?

Использование:

Blog 
    .where('id', args.id) 
    .fetch({ 
    withRelated: [ 
     Post 
    ] 
    }) 
    .call('related', 'post') 
    .call('toJSON'); 

вызывает ронние запрос.

Единственный способ, которым я нашел это, - запросить объект Post с использованием пользовательского запроса, например.

Post 
    .where('blog_id', parent.id) 
    .fetchAll() 
    .call('toJSON'); 

Проблема с последним подходом заключается в том, что он отрицает цель установления отношений, в первую очередь.

ответ

1

Создайте модель (вы можете использовать new Model или Model.forge()) и установите первичный ключ (однако вы хотите, но прохождение его в начальных атрибутах обычно проще). Затем позвоните по телефону model.load(), чтобы загрузить соответствующие модели. Пример:

Blog 
    .forge({ 
    id: 1 
    }) 
    .load('posts') 
    .call('related', 'posts') 
    .call('toJSON') 
    .then((posts) => { 
    console.log('posts', posts); 
    }); 

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

  • Нет связанных вопросов^_^