Today I inherited a piece of code that looked something like this:
const records = Records.findOne({
where: {
pk: 'blah',
},
sort: ['dateField', 'DESC']
});
It did not seem to be sorting correctly, so I looked up
ordering for Sequelize. Since I am new to Sequelize, I did not know that the correct property is
order
and not
sort
. But when I changed it, I got this error message:
Unknown column \'DESC\' in \'order clause\'
It took me longer than I care to admit to see what the issue was. If you pass an array of single items to the
order
property, it will use them all as part of the sort. So the backend SQL query looked something like this:
SELECT * FROM my_table WHERE pk = 'blah' ORDER BY dateField, DESC
What I really wanted was to pass it an array of arrays to sort on. So the correct code looks like this:
const records = Records.findOne({
where: {
pk: myValue,
},
order: [
['dateField', 'DESC']
],
});
Notice that
order
property now is an array containing an array specifying the field to sort on and the direction with which to sort it.
0 comments:
Post a Comment