mongoose:获取用户的完整列表
我试图用Mongoose发送所有用户的列表,如下所示:
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); }); });
从本质上讲,我希望只有当所有的用户都从数据库中获取callback才能被执行。
那么,如果你真的想要返回一个从_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()
返回一个数组中的所有匹配文档,所以你最后的代码被剪切后发送给客户端。
如果你想发送数据到一个视图通过以下。
server.get('/usersList', function(req, res) { User.find({}, function(err, users) { res.render('/usersList', {users: users}); }); });
在您的视图内,您可以使用variables用户循环访问数据
这只是对@soulcheck答案的改进,并修正了forEach中的错字(缺less右括号);
server.get('/usersList', function(req, res) { User.find({}, function(err, users) { res.send(users.reduce(function(userMap, item) { userMap[item.id] = item; return userMap; }, {})); }); });
干杯!