プログラミング電子ブックのビジュアルカタログを作成するために、小さなライブラリアプリケーションを構築しています。これまでに、BooksViewModel.jsファイルのko.observableArrayに電子書籍情報の一部を追加しました。後で、MongooseDBに保存されているすべてのデータを使用してNodeJSアプリケーションを実装し、そこからアクセスしますが、今では、Knockout.jsから直接実験しています。
デフォルトでは、私のライブラリには、追加した、整理されていないすべての本が表示されるので、言語ごとに「カテゴリ」を実装するのを楽しみにしています。すべてのbookオブジェクトには言語属性が含まれています。言語で表示された本をフィルタリングしたいのですが、これを行うための最良の方法がどのようになるかについて少し混乱しています。
配列に関する本は整理されておらず、すべてそこにドロップされています。javascript、その他のCなどについての話もあります。最初は、言語ごとに個別の配列を作成し、次にViewModelにメソッドを実装して、要求した言語の対応する配列を選択することを考えました。
後で、NodeJS APIを実装して、言語別に取得します。
GET /languages/C // will get a json corresponding all the books that talks about C
ViewModelには、次のメソッドを含めることができます。
self.findByLanguage = function(lang) {
self.books = // GET /languages/:lang
};
しかし、それは毎回データベースにクエリを実行します。最初に本全体をjsonでロードし、それらすべてをクライアント側の配列に保存してから、フィルター処理する方がよいと思います。そうすれば、1つのリクエストだけが行われます。すべての本を含むグローバル配列を作成してから、ko.utils.ArrayFilterを使用してフィルターを実装できます。
皆さんは何が最善のアプローチになると思いますか?たぶんもっと良い方法があります。
前もって感謝します!