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