programing

몽구스:전체 사용자 목록 가져오기

abcjava 2023. 3. 7. 20:58
반응형

몽구스:전체 사용자 목록 가져오기

Mongoose를 사용하여 다음과 같이 모든 사용자의 목록을 보내려고 했습니다.

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

기본적으로 모든 사용자를 데이터베이스에서 가져온 경우에만 콜백을 실행합니다.

음, 만약 당신이 정말로 지도를 돌려주고 싶다면_id로.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});
        });
    });

뷰 내에서 가변 사용자를 사용하여 데이터를 루프할 수 있습니다.

데이터를 나열하는 매우 쉬운 방법이 있었습니다.

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

이는 @soulcheck의 답변 개선과 각 오타 수정(마감 괄호 누락)일 뿐입니다.

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

건배!

비동기 wait 및 arrow 기능에서도 동일한 작업을 수행할 수 있습니다.

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

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

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

res.send(userMap);

});

하고 싶은 경우list all documents in Mongoose collection끝나고update또는delete

다음과 같이 함수를 편집할 수 있습니다.

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

이 방법은list all documents뿐만 아니라 성공으로showing success message

목록 가져오기를 대기하도록 함수를 설정합니다.

getArrayOfData() {
    return DataModel.find({}).then(function (storedDataArray) {
        return storedDataArray;
    }).catch(function(err){
        if (err) {
            throw new Error(err.message);
        }
    });
}

마이솔루션

User.find()
        .exec()
        .then(users => {
            const response = {
                count: users.length,
                users: users.map(user => {

                    return {
                        _id: user._id,
                        // other property
                    }

                })

            };
            res.status(200).json(response);
        }).catch(err => {
        console.log(err);
        res.status(500).json({
            success: false
        })
    })

이거 드셔보세요.

User.find().exec(function(err, users){
 console.log('users : ', users);
 console.log('err', err);
 return res.send(users);
});

콜백 메서드는 쿼리가 실행된 후에만 실행됩니다.

app.get('/api/users', (req,res) => {
  User.find({}, (err, users) => err ? console.log(err) : res.json(users));
});

exports.getAllUsers = ( req , res )= > {

User.find().exec((err,users)=>{

    if(err || !users){

        return res.status(400).json({error:"No users found"})

    }

    return res.status(200).json(users)

})

}

비동기 함수로 모든 사용자를 취득할 수도 있습니다.

await User.find({},(err,users)=>{

    if (err){
    return  res.status(422).send(err)
    }

    if (!users){
        return res.status(422).send({error:"No data in the collection"})
    }

    res.send({Allusers:users})

})

언급URL : https://stackoverflow.com/questions/14103615/mongoose-get-full-list-of-users

반응형