SequelizeJS: неправильный порядок значений столбцов при использовании чисел в качестве строки - PullRequest
0 голосов
/ 05 января 2019

Я новичок в SequelizeJS и использую его для PostgreSQL с приложением NodeJS.

У меня есть таблица:

sequelize.define('log', {
    id: {
        type: type.INTEGER,
        primaryKey: true,
        autoIncrement: true
    },
    statusCode: type.INTEGER,
    status: type.STRING,
    message: type.TEXT,
    lastRecordId: type.STRING,
    lastRecordTime: type.DATE
});

Проблема в том, что когда я запускаю запрос на выборку значений из столбца lastRecordId в порядке DESC, я получаю неправильный порядок значений:

Wrong order of values

Я не хотел использовать INTEGER и BIGINT для этого столбца, поскольку он содержит код, а не действительное число.

Я использую запрос:

        LoggerModel
            .findAll({
                order: [ [ 'lastRecordId', 'DESC' ]],
            })
            .then( allLogs => {
                //...
            })

Ответы [ 2 ]

0 голосов
/ 11 января 2019

Я нашел решение, используя ответы @bereket и из ответа здесь . То, что сработало для меня, выглядит следующим образом:

    LoggModel
        .findAll({
            order: [
                [ sequelize.cast(sequelize.col('lastRecordId'), 'BIGINT') , 'DESC' ]
            ]
        })
        .then((logs) => { /// })
0 голосов
/ 08 января 2019

Вы можете разыграть его на лету, не меняя тип столбца. Тогда вы можете заказать с этим.

LoggerModel
        .findAll({
            order: [
                     sequelize.cast('lastRecordId', 'BIGINT'),
                     [ 'lastRecordId', 'DESC' ]
              ],
        })
        .then( allLogs => {
            //...
        })

вдохновленный этим

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...