0

Expressでアプリを構築しています。ログインしたスーパー管理者はビューの 1 つで、利用可能なすべてのクライアント/ユーザーを表示できます。このビューでは、MongoDB/Mongoose から一連のクライアント データを単純にロードしています。

app.get('/superadmin', function(req, res) {    
  Client.find({}, '_id company monthly_cost sms_cost', function (err, docs) ...

上記のように、クエリから必要な値のみを選択しました。これらの 4 つは、「_id」、「company」、「monthly_cost」、および「sms_cost」です。

「_id」から .getTimestamp() を使用して「作成日」を取得できますが、この関数が返す Dateobject は少し複雑な形式になっています。(YYYY-MM-DD) のようなもっと単純な日付が必要です。dateformat のような小さなノード プラグインを使用するか、IsoDate オブジェクトから YYYY、MM、および DD を抽出し、これを新しい変数/配列に保存する非常に単純な関数を作成することを考えています。

今私の質問に:

Q1) このコードの正しい場所はどこですか? 私は現在、上記のルートハンドラーの中に入れています...その結果、上記のコードのすぐ下に従います。これは、MVC パターンによると、主に正しい方法だと思います。このコードを Jade ビュー テンプレートに入れたくないと思っていますか?

Q2) このデータをどのような形式で保存し、どのように Jade に渡す必要がありますか? どうにかして「ドキュメント」データに追加する必要があります...つまり、DBから抽出したデータです。または、この creationDate を別の配列に入れて、元の DB データと並べて jade に渡す必要があります。

私の質問が十分に明確であることを願っています!

4

1 に答える 1

1

Q1: Mongoose クエリが route のみに依存している場合/superadmin、これはコードを配置するのに最適な場所です。異なるルートまたは関数で同じスニペットを使用している場合は、問題のすべてのルートにアクセスできる関数でラップすることもできます。reqただし、wrapresやその他の必要な変数も忘れないでください。コールバック内で計算を行い、データの表現にのみ Jade を使用します。

Q2: 「保存」とは何を意味しますか? 計算と変換を行うためにすべてのドキュメントを既に繰り返し処理している場合は、すべてのドキュメントに追加のフィールドを作成し、後で単一のパラメーターとして Jade ファイルにcreationDate渡します。docs

于 2013-09-16T12:23:32.380 に答える