shk*_*shk 7 node.js sequelize.js
有没有办法使用sequelize.js从表中选择不同的行?我查看了文档,但"finder方法"没有指定完成此任务的方法.
Pas*_*wig 15
假设您要将DISTINCT应用于以下查询:
Tuple.findAll({attributes: ['key', 'value']});
Run Code Online (Sandbox Code Playgroud)
那么这是一种(hackish)方式来实现你想要的,而不必自己编写整个查询:
Tuple.findAll({attributes: [[Sequelize.literal('DISTINCT `key`'), 'key'], 'value']});
Run Code Online (Sandbox Code Playgroud)
(使用Sequelize v2.1.0测试)
编辑2015-06-08:仍然适用于Sequelize v3.1.1
小智 5
编辑你的"node_modules/sequelize/lib/dialects/mysql/query-generator.js"
在118号线附近
更改
var query = "SELECT <%= attributes %> FROM <%= table %>"
Run Code Online (Sandbox Code Playgroud)
成
var query = "SELECT " + ((options.distinct)? 'DISTINCT ':'') +"<%= attributes %> FROM <%= table %>",
Run Code Online (Sandbox Code Playgroud)
现在您可以distinct: true
在续集请求中添加一个选项
希望它有所帮助-_ ^
您可以执行以下操作:
myModel.findAll({
attributes: [[sequelize.fn('DISTINCT', sequelize.col('col_name')), 'alias_name']],
where:{}
}).then(data => {}).....
Run Code Online (Sandbox Code Playgroud)
从问题中提取出来并且有效。
Model.findAll({Attributes: ['col_name1', 'col_name2'], group: ['col_name1', 'col_name2']});
Run Code Online (Sandbox Code Playgroud)
Sequelize 5.21 完全没问题
这是不可能自动完成的,但如果你不介意自己创建 sql,你可以这样做:
sequelize.query('sql goes here', null, { raw: plain }).success(function(data){
console.log(data)
})
Run Code Online (Sandbox Code Playgroud)
玩得开心 :)
更新
then
而不是作为success
Promise 函数。Sequelize.query
已被重构为仅使用参数sql
和options
raw
接受true/false
但不plain
作为价值。因此,根据新版本,代码应该如下所示:
sequelize.query('sql goes here', { raw: true }).then(function(data){
console.log(data);
});
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
23089 次 |
最近记录: |