2016-04-18 1 views
0

LIMITOFFSETというアプリケーションでいくつかのSQLクエリ結果をページングしていますが、結果として得られるリストをフロントエンドからSQLクエリORDER BYまで順番に並べ替えるためにJavascriptコントロールを追加したいと思います。SQLクエリのORDER BY列をJSコードに書き込む必要がありますか?

ソートする列は、SQLのORDER BYに渡されます。

JSコードで記述する必要がありますか?一般的な文字列をサーバーに渡してから、SQLの列名に変換する必要がありますか?

SQLクエリJSで表示される行を取得するには:

SELECT * 
FROM MY_TABLE 
ORDER BY :criteria 
LIMIT :limit 
OFFSET :offset 

AJAXのクエリを担当するJSコードをここ


は、問題を明確にするために、コードのいくつかの作品です。

function sortBy(selected) { 
    $.ajax({ 
     url: "/super/link/to/controller/method?orderBy=" + selected.val(), 
     type: 'GET', 
     dataType: "HTML", 
     success: function (data) { 
      // Code here doing the list refresh with the data 
     } 
    }); 
} 

orderByのパラメータは、thとのSQLクエリに追加されます名前はcriteriaです。それは、SQLテーブルの列の名前に一致するようにサーバーによって操作することができますが、それは本当に良い習慣ですか?

答えて

2

本質的にこれに間違ったことはありません。あなたが使用しているかもしれないさまざまなORMソリューションに基づいて、他の/より良いオプションがあるかもしれませんが、あなたがSQLインジェクションに対してあなたのアプリケーションを安全にしている限り、

+0

私はJSがSQLクエリを書いているとは思っていません。しかし、ええ、私はコントローラに入力された値をオンにすることでブロックすることができます。しかし、私が特に気に入らないのは、DBのデザインがJSに影響を与えているということです。それは私にかなり伸びたデザインの依存関係のように聞こえる。 –

+1

私は、クエリ自体がJSで書かれているところは見ません。私はJSがUIで選択された値を渡すことを見ているだけです。あなたが言ったように、サーバー上のswitch文を使用して、UIからの値を処理し、適切にクエリを構築します。その時点で、UIはサーバに何が選択されたかを伝えるだけであり、実際にはDB設計の影響を受けていません。 UIの文字列はクエリで使用される文字列と同じである必要はありませんが、UIからの文字列を使用してクエリを正しく構築するには、変換レイヤーが必要です。 –

+0

"翻訳レイヤーが必要です"、そうです、それは私が探していた重要な部分です。私はDAOに入れますよね? –

関連する問題