wake-up-neo.com

Mungo: Vollständige Liste der Benutzer abrufen

Ich habe versucht, Mongoose zu verwenden, um die Liste aller Benutzer wie folgt zu senden:

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

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

    res.send(users);
});

Natürlich wird res.send(users);{} senden, was ich nicht will. Gibt es eine find-Alternative mit etwas anderer Semantik, bei der ich Folgendes tun könnte?

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

Grundsätzlich möchte ich, dass der Rückruf nur ausgeführt wird, wenn alle Benutzer aus der Datenbank abgerufen wurden.

66
Randomblue

Wenn Sie wirklich ein Mapping von _id nach user zurückgeben möchten, können Sie immer Folgendes tun:

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() gibt alle übereinstimmenden Dokumente in einem Array zurück, so dass Ihr zuletzt abgeschnittener Code dieses Array an den Client sendet.

122
soulcheck

Wenn Sie die Daten an eine Ansicht senden möchten, geben Sie Folgendes ein. 

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

Innerhalb Ihrer Ansicht können Sie die Daten mit den variablen Benutzern durchlaufen

11
bstory

Es war sehr einfach, Ihre Daten aufzulisten:

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

Dies ist nur eine Verbesserung der Antwort von @soulcheck und ein Tippfehler in forEach (fehlende schließende Klammer).

server.get('/usersList', function(req, res) {
    User.find({}, function(err, users) {
        res.send(users.reduce(function(userMap, item) {
            userMap[item.id] = item;
            return userMap;
        }, {}));
    });
});

prost!

7
Evan P

Das Gleiche kann mit der Async-Warten- und Pfeil-Funktion gemacht werden

server.get('/usersList', async (req, res) => {

const users = await User.find({});

const userMap = {};
users.forEach((user) => {
    userMap[user._id] = user;
});

res.send(userMap);

});
1
vithu shaji

Falls wir list all documents in Mongoose collection nach update oder delete wollen

Wir können die Funktion wie folgt bearbeiten:

exports.product_update = function (req, res, next) {
        Product.findByIdAndUpdate(req.params.id, {$set: req.body}, function (err, product) {
            if (err) return next(err);
            Product.find({}).then(function (products) {
                res.send(products);
                });
            //res.send('Product udpated.');
        });
    };

Dies wird list all documents bei Erfolg statt nur showing success message

0
Abdallah Okasha