Sequelize:查询我使用foreignKey的地方而不是

时间:2015-08-03 17:22:30

标签: node.js postgresql sequelize.js

所以我在查找我正在寻找的查询结果时遇到了一些问题。在模型方面我有

models.UserRole = sequelize.define('userrole', {
    name: {
        type: Sequelize.STRING,
        primaryKey: true
    },

    permissions: {
        type: Sequelize.ARRAY(Sequelize.STRING),
        defaultValue: []
    }
});

models.User = sequelize.define('user', {
    id: {
        type: Sequelize.UUID,
        defaultValue: Sequelize.UUIDV4,
        primaryKey: true
    },
    ...
});

models.User.belongsTo(models.UserRole, {foreignKey: 'role'});

我使用 foreignKey 而不是作为,因为我希望该字段完全被称为 role 而不是Sequelize将其更改为(的 ROLENAME )。

无论如何,我现在正在尝试查询并包含权限以及所选用户,因此我使用

    models.User.findById(id, {
        attributes: ['id','role'],
        include: [{
            model: models.UserRole,
            attributes: ['name', 'permissions']
        }]
    })

它有效,但它会在字段 userrole 上检索它们,看起来像这样

{"id":"id-here","role":"admin","userrole":{"name":"admin", "permissions":["p1","p2",..]}}

所以最后,我的问题是如何制作它以便从UserRole模型中检索的内容在关键字" role"代替?所以它看起来像

{"id":"id-here","role":{"name":"admin", "permissions":["p1","p2",..]}}

0 个答案:

没有答案