4

認証用のエクスプレスストームパスを使用してエクスプレスサーバーを実行し、ユーザーに関する同じカスタムデータを保存しています。

データをサーバーに投稿して、ストームパスに保存するにはどうすればよいですか? 現在、私の投稿は次のようになっています。

app.post('/post', stormpath.loginRequired, function(req, res) {
   var stundenplan_data = req.body;
   console.log(stundenplan_data);
   req.user.customData.stundenplan = stundenplan_data;
   req.user.customData.save();
});

console.log に投稿したい正しいデータを取得していますが、別の取得リクエストでデータを呼び出すと、カスタム データは空になります。

4

1 に答える 1

4

私はexpress-stormpathライブラリの作成者です。私がすることは次のとおりです。

Stormpath をミドルウェアとして初期化する場合は、次の設定を追加して、customData を自動的に使用できるようにします。

app.use(stormpath.init(app, {
  ...,
  expandCustomData: true,  // this will help you out
}));

ルート コードを次のように変更します。

app.post('/post', stormpath.loginRequired, function(req, res, next) {
  var studentPlan = req.body;
  console.log(studentPlan);
  req.user.customData.studentPlan = studentPlan;
  req.user.customData.save(function(err) {
    if (err) {
      next(err);  // this will throw an error if something breaks when you try to save your changes
    } else {
      res.send('success!');
    }
  });
});

上記の変更が機能しなかった理由は、最初に customData を展開しなかったためです。Stormpath では、customData を「取得」するために別の要求が必要になるため、最初にそれを行わないと、保存に失敗します。

上記の変更により、これが自動的に行われます =)

于 2014-11-17T20:47:54.333 に答える