按值位置顺序排列findAll

时间:2019-12-28 23:18:07

标签: node.js express sequelize.js

我正在使用Sequelize,我想按位置值排序。我认为Sequelize会随机产生结果。

这是我的查询:

router.post("/", (req, res) => {
    const value = req.body.value

    Titles.findAll({
        where: 
            { [Op.or]: [
                {title: { [Op.iLike]: '%' + value + '%'}},
                {titleLink: { [Op.iLike]: '%' + value + '%'}}
            ]
        },
        attributes: ['id', 'title', 'titleLink', 'entryCount'],

        ///limit: 10,
    }).then(result => {
        res.json({'titles': result})
    })
    //res.send({results: req.body})
})

结果看起来像这样

值:测试

结果:

  1. 测试标题
  2. 测试标题2
  3. 测试
  4. 示例测试

结果(我想要):

  1. 测试
  2. 测试标题1
  3. 测试标题2
  4. 示例测试

1 个答案:

答案 0 :(得分:0)

如果Titles有一个字段position,那么您可以简单地使用the doc中提到的order属性(或使用id字段):

router.post("/", (req, res) => {
    const value = req.body.value

    Titles.findAll({
        where: 
            { [Op.or]: [
                {title: { [Op.iLike]: '%' + value + '%'}},
                {titleLink: { [Op.iLike]: '%' + value + '%'}}
            ]
        },
        attributes: ['id', 'title', 'titleLink', 'entryCount'],
        order: [['position', 'ASC']],

        ///limit: 10,
    }).then(result => {
        res.json({'titles': result})
    })
    //res.send({results: req.body})
})