假设一个简单的一对多关系,例如
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');
后一种方法的问题在于它否定了首先建立关系的目的。
答案 0 :(得分:1)
实例化一个模型(您可以使用new Model
或Model.forge()
)并设置主键(但是您想要,但在初始属性中传递它通常是最简单的)。然后致电model.load()
以急切加载相关模型。例如:
Blog
.forge({
id: 1
})
.load('posts')
.call('related', 'posts')
.call('toJSON')
.then((posts) => {
console.log('posts', posts);
});