Мангуст: получить полный список пользователей
Я попытался использовать Мангуста, чтобы отправить список всех пользователей следующим образом:
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);
});
});
по существу, я хочу, чтобы обратный вызов выполнялся только тогда, когда все пользователи были извлечены из базы данных.
4 ответов:
Ну, если вы действительно хотите вернуть отображение от
_idtouser, например: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}); }); });внутри вашего представления вы можете перебирать данные с помощью переменной users
Это просто улучшение ответа @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; }, {})); }); });ура!
был очень простой способ перечислить ваши данные:
server.get('/userlist' , function (req , res) { User.find({}).then(function (users) { res.send(users); }); });
Comments