মঙ্গুজ: ব্যবহারকারীদের সম্পূর্ণ তালিকা পান


101

আমি নীচে সমস্ত ব্যবহারকারীর তালিকা প্রেরণের জন্য মঙ্গুজকে ব্যবহার করার চেষ্টা করেছি:

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

মূলত, আমি কলব্যাকটি তখনই কার্যকর করতে পারি যখন সমস্ত ব্যবহারকারীকে ডাটাবেস থেকে আনা হয়।


ভিউ এ এটি অ্যাক্সেস কিভাবে?
সানী 11

উত্তর:


177

ওয়েল, যদি সত্যিই থেকে একটি ম্যাপিং ফিরে যেতে চাই _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() একটি অ্যারেতে সমস্ত মিলে যাওয়া নথিগুলি ফেরত দেয়, তাই আপনার শেষ কোডটি স্নিপড ক্লায়েন্টকে সেই অ্যারে প্রেরণ করে।


ভিউ এ এটি অ্যাক্সেস কিভাবে?
সানী 11

13

আপনি যদি কোনও ভিউতে ডেটা প্রেরণ করতে চান তবে নীচে প্রবেশ করুন।

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

আপনার দৃশ্যের ভিতরে আপনি ভেরিয়েবল ব্যবহারকারীদের ব্যবহার করে ডেটা লুপ করতে পারেন


9

এটি কেবলমাত্র @ সোলচেকের উত্তরের একটি উন্নতি, এবং টাইপ ফোরইচ-এ (ক্লোজিং বন্ধনী অনুপস্থিত) ঠিক করা;

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

চিয়ার্স!


ভিউ এ এটি অ্যাক্সেস কিভাবে?
সানী 11

4
ব্যাখ্যা করা? আপনি কি করতে চান?
ইভান পি

@ সানী আপনি যখন /userListরুটটি অ্যাক্সেস করবেন আপনি ফর্ম্যাট সহ একটি জেএসওএন অবজেক্ট পাবেন:{"123451": {...user 123451}, "123452": {...user 123452} }
ম্যাক্সওয়েল স্ক

8

আপনার ডেটা তালিকাভুক্ত করার খুব সহজ উপায় ছিল:

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

4

অ্যাসিঙ্ক অপেক্ষা এবং তীর ফাংশন দিয়ে একই কাজ করা যেতে পারে

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

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

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

res.send(userMap);

});

1

যদি আমরা 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


1

তালিকাটি আনার জন্য অপেক্ষা করতে ফাংশন করা।

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

0

আমার সমাধান

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
        })
    })
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.