3

私はNode.jsを使い始めたばかりなので、愚かなことを許してください!!! Node.js を使用して新しいアプリケーションを作成しようとしています。Postgresql データベースで Express フレームワークを使用しています。問題は、私の見解では、関数を呼び出したかったことです。そこで、jade ファイルから呼び出されるヘルパー関数を使用しました。しかし、この関数はデータベースにアクセスするため、機能させるためにコールバックを使用しようとしました。

ただし、関数として最後の引数を使用して、jade テンプレートから関数を呼び出すことができないようです。ヘルパー関数は、渡されるパラメーターが 1 つだけで、それがコールバック関数でない場合に正常に機能しました。しかし、データベース クエリに時間がかかったため、データが表示されませんでした。しかし、jade テンプレートからコールバックを使用して関数を呼び出そうとすると、構文エラーが発生します。

私の翡翠テンプレートでの私の関数呼び出し:

#{ nameAndVersion(result.bu_entrep_id, function(error, result)) } 

私のヘルパー関数(機能させようとしていたので簡単です):

exports.helpers= {
nameAndVersion: function(entid, callback) {
var x=1;
     callback(null, x);
     console.log(1);
}
};

私のエラー:

500 SyntaxError: Unexpected token )

したがって、基本的には、jade テンプレートからヘルパー関数を呼び出し、その関数をコールバック関数にしたいと考えています。

4

1 に答える 1

3

あなたがしたい:

  1. テンプレートを解析する
  2. データを取得する
  3. データを含むテンプレートをレンダリングする

エクスプレス テンプレートは次のことを行うことが期待されます。

  1. データを取得する
  2. データの解析とレンダリング

レンダリングを開始したら、複雑なコードを実行する必要はありません (データベースが利用できない場合はどうなりますか?)。

Jade ヘルパーは、機能的なものではなく、書式設定のみを目的としています。

ヘルパーを呼び出す代わりに、レンダラーを呼び出すときに必要なデータを提供する必要があります。

app.get('anyPage', function(req, res) {
   database.doSomeDataBaseQuery( /* Data base callback */ function(data, err) {
     if(!err) res.render('pageTemplate', {dataBaseData:data});
   }
});
于 2012-05-14T13:05:41.290 に答える