Результаты "Упорядочить по" из запроса SQLITE не упорядочены - PullRequest
0 голосов
/ 23 сентября 2019

Я работаю над интернет-магазином.Я пытаюсь получить отсортированные результаты на основе значений параметров из базы данных sqlite.Я пытаюсь отсортировать товары на основе значений "select".

В моем app.js

app.get('/sortMaleProducts', function(request, response){

    var sortValues = request.query.sortValue;

    if(sortValues == 'priceASC')
    {
        sortValues = ["man", "price", "ASC"];
    }
    else if(sortValues == 'priceDESC')
    {
        sortValues = ["man", "price", "DESC"];
    }

    db.sortMaleProducts(sortValues, function(error, clothes){
        if(error){

            console.log("Error: "+ error);
        }
        else{

            console.log(clothes)
            const model = {

                clothes
            }

            response.render("man.hbs", model)
        }
    })
})

В моем db.js

exports.sortMaleProducts = function(sortValues, callback){

    const query = 'SELECT * FROM products WHERE gender = ? Order by ?, ?'

    db.all(query, sortValues, function(error, clothes){

        console.log(clothes);
        callback(error, clothes);
    })

Если я жестко закодировалзапрос вроде:

const query = 'SELECT * FROM products WHERE gender = 'man' Order by price ASC'

Тогда это работает .... Но я хочу использовать пользовательский ввод, чтобы я мог повторно использовать код ..

1 Ответ

0 голосов
/ 23 сентября 2019

Если вы хотите отсортировать по столбцу, имя этого столбца должно появиться непосредственно в запросе.То, что вы делаете, сортирует результаты по строкам 'price' и 'ASC', которые одинаковы для каждой строки, поэтому сортируется любой порядок результатов.

Вы не можете использовать имена столбцов в качестве параметров в любом местелибо в запросе, либо в столбцах для возврата, либо в WHERE.Они должны присутствовать, когда оператор подготовлен путем компиляции его во внутренний байт-код sqlite, что происходит перед привязкой любого параметра или выполнением запроса.

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