2012-12-31 5 views
43

の完全なリストを取得します。もちろんマングース:私は次のようにすべてのユーザーのリストを送信するためにマングースを使用しようとしましたユーザー

server.get('/usersList', function(req, res) { 
    var users = {}; 

    User.find({}, function (err, user) { 
     users[user._id] = user; 
    }); 

    res.send(users); 
}); 

を、res.send(users);は私が欲しいものではありませんこれは、{}を送信しようとしています。若干異なるセマンティクスを持つfind代替品がありますか?次のことができますか?

server.get('/usersList', function(req, res) {  
    User.find({}, function (err, users) { 
     res.send(users); 
    }); 
}); 

基本的には、すべてのユーザーがデータベースからフェッチされた場合にのみコールバックを実行する必要があります。

+0

は、それをアクセスすることができますか見る? – Saani

答えて

86

さて、あなたが本当に_idからuserへのマッピングを返したい場合、あなたは常に行うことができます:配列の

server.get('/usersList', function(req, res) { 
    User.find({}, function(err, users) { 
    var userMap = {}; 

    users.forEach(function(user) { 
     userMap[user._id] = user; 
    }); 

    res.send(userMap); 
    }); 
}); 

find()戻り一致するすべての文書を、あなたの最後のコードが切り取らようにその配列を送信しますクライアント。

+0

だから、私は 'find'のセマンティクスについて混乱しました。ありがとう。 – Randomblue

+0

ビューでアクセスする方法は? – Saani

+0

これは素晴らしいことですが、私はそれを感謝します。 –

7

これは単なる@Soulcheckの答えの改善であり、forEach(閉じ括弧がない)の誤植の修正です。

server.get('/usersList', function(req, res) { 
    User.find({}, function(err, users) { 
     res.send(users.reduce(function(userMap, item) { 
      userMap[item.id] = item; 
      return userMap; 
     }, {})); 
    }); 
}); 

乾杯!

+0

ビューでアクセスするには? – Saani

+1

説明?何をしたいですか? –

9

ビューにデータを送信したい場合に次のように渡します。あなたの視野内

server.get('/usersList', function(req, res) { 
     User.find({}, function(err, users) { 
      res.render('/usersList', {users: users}); 
     }); 
    }); 

あなたは変数のユーザーを使用してデータをループ

関連する問題