Sequalize,findall查询,如何按特定顺序返回数组?

时间:2016-11-29 08:08:13

标签: javascript database postgresql sequelize.js

在客户端,截至目前,它从数据库接收一系列记录标签。下面的代码是Sequelize用于调用所有记录标签的查询。

我按名称(字符串)按顺序接收数组,但是

数组区分大小写,因此如果名称为capital,则将在数组的开头。我将举例说明它输出的内容:

目前:

A

C

d

B'/ P>

C

d

但是我试图让它像这样返回

A

B'/ P>

C

C

d

d

如果一切都失败了,我会在客户端做出一些逻辑,但任何建议都会受到赞赏。

router.get('/', function (req, res) {
  RecordLabel.findAll({
    order: ('name').toUpperCase()
  })
  .then(function (recordLabels) {
    return res.json(recordLabels)
  })
  .catch(function (err) {
    return res.json({ error: err})
  })
})

2 个答案:

答案 0 :(得分:1)

这个订单问题不是来自sequelize而是postgresql。在某些配置中,posstgresql甚至不通过主键或id进行排序。如果您有权限,更改数据库区域设置可以为您服务。

  

查询生成输出表后(在选择列表之后)   已处理)可以选择对其进行排序。如果没有选择排序,   行将以未指定的顺序返回。实际的订单   这种情况将取决于扫描和连接计划类型和订单   磁盘,但不能依赖它。特定的输出排序可以   只有在明确选择排序步骤时才能保证。

看看这个答案:link

答案 1 :(得分:1)

enter image description here使用此:

router.get('/', function (req, res) {
var sequelize=require('sequelize')
RecordLabel.findAll({
  order:[sequelize.fn('lower', sequelize.col('name'))]
})
.then(function (recordLabels) {
   return res.json(recordLabels)
})
.catch(function (err) {
  return res.json({ error: err})
  })
})