Мангуст: получить полный список пользователей



Я попытался использовать Мангуста, чтобы отправить список всех пользователей следующим образом:



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);
});
});


по существу, я хочу, чтобы обратный вызов выполнялся только тогда, когда все пользователи были извлечены из базы данных.

564   4  

4 ответов:

Ну, если вы действительно хотите вернуть отображение от _id to 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});
        });
    });

внутри вашего представления вы можете перебирать данные с помощью переменной 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

    Ничего не найдено.