javascript - Mongoose: Hämta fullständig lista över användare


Jag har försökt använda Mongoose för att skicka listan över alla användare enligt följande:

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

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

    res.send(users);
});

Självklart kommer res.send(users); att skicka {}, vilket inte är vad jag vill. Finns det ett find-alternativ med något annorlunda semantik, där jag skulle kunna göra följande?

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

I huvudsak vill jag att återuppringningen endast ska köras när alla användare har hämtats från databasen.

Svar #1

Tja, om du verkligen vill returnera en karta från _id till user, kan du alltid göra:

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() returnerar alla matchande dokument i en array, så din senaste kodsnutt skickar den arrayen till klienten.

Svar #2

Om du vill skicka datan till en vy, skicka in följande.

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

Inuti din vy kan du loopa genom datan med variabeln users

Svar #3

Det fanns det mycket enkla sättet att lista dina data:

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

Relaterade artiklar