过滤Sequelize实例

时间:2017-01-22 19:59:47

标签: node.js sequelize.js

由于我的API中存在某些限制,并且因为我更喜欢在模型结果中保留完整的信息范围,所以我不想过滤查询的属性,但我想从实例中获取某些属性查询返回了一个值。

所以不要这样:

User.findById(1, { attributes: ['firstName', 'lastName'] });

我想做点什么:

const attributes = ['firstName', 'lastName'];
const user = await User.findById(1);
const displayUser = user.getAttributes(attributes);

通过对查询结果本身使用一些实例方法(示例中为“getAttributes”),我想指定应该属于实例显示值的属性。

我找不到任何从文档中做到这一点的方法(以及搜索文档)。

如果没有在模型上定义instanceMethod,这是否可行呢?

修改

我也很清楚我可以手动过滤结果,但这似乎不是理想的做法。

1 个答案:

答案 0 :(得分:0)

作为解决方案之一,您可以在instanceMethods中定义 toJSON 方法,并指定返回字段的列表。

instanceMethods: {
    toJSON() {
        return {
            firstName: this.firstName,
            lastName: this.lastName
        };
    }
}

在不同的框架中,默认情况下在输出Sequelize实例时使用toJSON。 它只会在你的应用程序中显示结果之前(或者你的东西)将实例转换为普通对象。