如何将 select 中的函数与 Sequelize 中的所有记录一起使用?
How to use a function in select along with all the records in Sequalize?
下面是一个 Sequalize 查询,它根据 table 列值检索转换后的值。
courses.findAll({
attributes: [ [sequelize.fn('to_char', sequelize.col('session_date'), 'Day'), 'days']]
});
上面的 sequlaize 查询将 return 结果等于下面的 SQL 查询。
select to_char(bs.session_date, 'Day') as days from courses bs;
预期输出:
我想要属性中的转换值以及如下所示的所有记录。我知道我们可以在属性数组中提及所有列名,但这是一项乏味的工作。 SQL 查询中类似于星号的任何快捷方式。
select to_char(bs.session_date, 'Day') as days,* from courses bs;
我尝试了下面的 sequalize 查询,但没有成功。
courses.findAll({
attributes: [ [sequelize.fn('to_char', sequelize.col('session_date'), 'Day'), 'days'],'*']
});
attributes
选项可以传递一个对象以及一个字段数组,以便在这种情况下进行更精细的调整。 the documentation.
中对此进行了简要说明
courses.findAll({
attributes: {
include: [
[ sequelize.fn('to_char', sequelize.col('session_date'), 'Day'), 'days' ]
]
}
});
通过使用 include
,我们正在向 courses.*
选择中添加字段。同样,我们还可以在 attributes
对象中包含一个 exclude
参数,该参数将从 courses.*
选择中删除字段。
在 Sequelize 中有一个捷径可以实现星号类型的选择。可以按如下方式完成...
// To get all the column names in an array
let attributes = Object.keys(yourModel.rawAttributes);
courses.findAll({
attributes: [...attributes ,
[sequelize.fn('to_char', sequelize.col('session_date'), 'Day'), 'days']]
});
这是一个解决方法,可能有不同的选择。
下面是一个 Sequalize 查询,它根据 table 列值检索转换后的值。
courses.findAll({
attributes: [ [sequelize.fn('to_char', sequelize.col('session_date'), 'Day'), 'days']]
});
上面的 sequlaize 查询将 return 结果等于下面的 SQL 查询。
select to_char(bs.session_date, 'Day') as days from courses bs;
预期输出:
我想要属性中的转换值以及如下所示的所有记录。我知道我们可以在属性数组中提及所有列名,但这是一项乏味的工作。 SQL 查询中类似于星号的任何快捷方式。
select to_char(bs.session_date, 'Day') as days,* from courses bs;
我尝试了下面的 sequalize 查询,但没有成功。
courses.findAll({
attributes: [ [sequelize.fn('to_char', sequelize.col('session_date'), 'Day'), 'days'],'*']
});
attributes
选项可以传递一个对象以及一个字段数组,以便在这种情况下进行更精细的调整。 the documentation.
courses.findAll({
attributes: {
include: [
[ sequelize.fn('to_char', sequelize.col('session_date'), 'Day'), 'days' ]
]
}
});
通过使用 include
,我们正在向 courses.*
选择中添加字段。同样,我们还可以在 attributes
对象中包含一个 exclude
参数,该参数将从 courses.*
选择中删除字段。
在 Sequelize 中有一个捷径可以实现星号类型的选择。可以按如下方式完成...
// To get all the column names in an array
let attributes = Object.keys(yourModel.rawAttributes);
courses.findAll({
attributes: [...attributes ,
[sequelize.fn('to_char', sequelize.col('session_date'), 'Day'), 'days']]
});
这是一个解决方法,可能有不同的选择。