12

いつものように、SOでこの質問を見つけようとしましたが、まだ運がありません。

答えは「はい、req オブジェクトを変更できます」であることは承知していますが、req オブジェクトのパラメーターについては何も言われていません。

たとえば、次のコードはエラーをスローします。

app.get('/search', function(req, res) {
   req.param('q') = "something";
});

エラー:

ReferenceError: Invalid left-hand side in assignment


これは、「SET」メソッドを持たないプロパティまたはそれらの線に沿った何かと関係があると思います。

これが役立つシナリオがいくつかあります。

  1. クイックリンクを本格的なリクエストに変換し、それらをプロキシするサービス。
  2. 変更したくない別の関数に送信する前に、パラメーターを変更するだけです。

質問に、req オブジェクトのパラメーターを変更する方法はありますか?

4

3 に答える 3

25

それよりも:

req.param('q') = "something";

以下を使用する必要があります。

req.params.q = "something";

最初のものは、パラメーター自体ではなく、param 関数の戻り値に値を設定しようとしています。

req.param()メソッドがreq.body、から値req.paramsを一度にその順序で取得することは注目に値しreq.queryますが、値を設定するには、これら 3 つのうちどれに入れるかを指定する必要があります。

req.body.q = "something";
// now: req.param('q') === "something"
req.query.r = "something else";
// now: req.param('r') === "something else"

つまり、クライアントから送信されたものを永続的に変更しない限り、使用しているサードパーティのモジュールによってクライアントからの入力と間違えられないように、別の場所に配置することをお勧めします。

于 2013-09-14T13:23:54.690 に答える
1

左辺は変数やプロパティではないことも想像できるので、それに値を代入しようとしても意味がありません。クエリ パラメータを変更する場合は、req.queryオブジェクトのプロパティを変更する必要があります。

req.query.q = 'something';

req.bodyと についても同様req.paramsです。

于 2013-09-14T13:23:31.717 に答える