Bookshelf(knex) - belongsToMany关系不起作用

时间:2016-11-28 09:52:34

标签: mysql node.js express bookshelf.js knex.js

我一直在尝试使用belongsToMany关系(Bookshelf)设置帖子和标签之间的关系。这是我的代码:

db.js

const Post = bookshelf.Model.extend({
    tableName: 'posts',
    hasTimestamps: true,
    tags: function(){
        return this.belongsToMany(Tag)
    }
})

const Tag = bookshelf.Model.extend({
    tableName: 'tags',
    posts: function(){
        return this.belongsToMany(Post)
    }
})

// Pivot table
const PostTag = bookshelf.Model.extend({
    tableName: 'posts_tags',
    post: function(){
        return this.belongsTo(Post)
    },
    tag: function(){
        return this.belongsTo(Tag)
    }

})

获取路线是:

.get('/:id', (req, res, next) => {
        db
            .Post
            .where('id', req.params.id)
            .fetch({widthRelated: ['tags'], require:true})
            .then((data)=> {
                return res.json({data, ralation: data.related('tags').toJSON()})
            })
    })

我已经添加了一个表格&post; posts_tags'在数据库中,所有数据库都是种子,包括此数据透视表。因此,当我在路由中查询时,关系查询甚至不会启动。 knex debug: sql:'从posts选择posts。*,其中id =?限制?'

表格

帖子 - id标题文字created_at updated_at

标签 - id name created_at updated_at

posts_tags - id post_id tag_id created_at updated_at

代码中是否有错误?

1 个答案:

答案 0 :(得分:0)

对不起这篇文章 - 我只是错字:

.fetch({widthRelated: ['tags'], require:true})

widthRelated = withRelated !!!!!!