2016-05-23 1 views
1

jsを表現するのが初めてです。私は現在todoリストWebアプリケーションを構築中です。私はチュートリアルに従っており、基本的なCRUD操作を実行することができます。私は2つのモデルを持っています。Expressjs(ノード) - ユーザーに応じてフィルタリングされた一連のデータを取得する方法

  1. ユーザー - (名前、電子メール、パスワードハッシュ、パスワードの塩、todo_items - 第2モデルへの参照)。
  2. Todo_items - (タイトル、説明、due_date、ユーザー - 最初のモデルへの参照)。

ユーザーがログインすると、彼のuser_idを読むことができます。しかし、ユーザーにのみ属するtodo_itemsをどのようにフィルタリングできますか?私の現在のコードはこのようになり、すべてのユーザーからすべてのtodo_itemを返しています。

router.get('/api/todo_items', function(req, res, next){ 
    Todo_items.find(function(err,todo_items){ 
    if(err){return next(err); } 
    res.json(todo_items); 
    }) 
}); 

現在、フロントエンドフレームワークAngularjsを使用して、表示される結果をフィルタリングしています。しかし、私はこれがユーザーベースが大きくなるにつれて非効率だと考えました。バックエンドからフィルタリングシステムを作成するにはどうすればよいですか?

答えて

1

あなたは、次のようなものを持っていることができるように、それは_idフィールド上Userモデルを参照すると仮定すると、ユーザーフィールドにコレクションを照会することができます

router.get('/api/todo_items', function(req, res, next){  
    Guest.find({ "user": user_id }).exec(function(err, todo_items){ 
     if(err) { return next(err); } 
     res.json(todo_items); 
    }); 
}); 
+0

ので、私はuser_idを定義するミドルウェアが必要でしょうか? – Sydney

+0

ローカルストレージからuser_idを取得する方法を知っていますか? – Sydney

+0

'req'オブジェクト' req.user'を介してミドルウェアを介して 'user_id'を取得するメカニズムが必要です。残念なことに、これは広範囲の問題です。これまでのところ、以下のような幅広い疑問があります: '' {{{{{{{{{{{{{{{{}}私はあなたがここに新しい質問を作成することを保証することを知っています。 – chridam

関連する問題