Bookshelf.js 多态关系查询返回空数组

Posted

技术标签:

【中文标题】Bookshelf.js 多态关系查询返回空数组【英文标题】:Bookshelf.js polymorphic relation query returns empty array 【发布时间】:2015-11-12 02:42:16 【问题描述】:

我根据需要定义了我的关系。一个用户有多张照片,一张照片属于一个用户。

为什么我的查询返回一个空的 photos[] 数组? (我正在尝试获取给定用户的所有照片)

文档:http://bookshelfjs.org/#polymorphic

我的图像表结构如下:

图片

id (auto increment and primary key)
imageable_type (user is given)
imageable_id (user_id is given)

models.js

var image = db.Model.extend(
    tableName: 'images',
    imageable: function () 
        return this.morphTo('imageable', user);
    
);

var user = db.Model.extend(
    tableName: 'users',
    hasTimestamps: true,

    photos: function () 
        return this.morphMany(image, 'imageable');
    
);

module.exports.user = user;
module.exports.image = image;

app.js

var user = require('./models').user;
var image = require('./models').image;

app.get('/photos', function (req, res) 
    user.where('id' , 1).fetchAll(withRelated: ['photos']).then(function (data) 
        data = data.toJSON();
        res.send(data);
    );
);

【问题讨论】:

【参考方案1】:

问题解决了。

原来你需要在 images 表中使用复数表名,在本例中为 users

【讨论】:

想解释更多?

以上是关于Bookshelf.js 多态关系查询返回空数组的主要内容,如果未能解决你的问题,请参考以下文章

Bookshelf.js belongsToMany 查询列错误

使用 Bookshelf.js 在数据透视模型上设置时间戳

通过 Bookshelf.js 流式传输数据

Bookshelf.js 查询相关表行

Bookshelf.js / Knex.js 嵌套在单个查询中的位置

如何在 Bookshelf.js 中查询日期