Dhara
Dhara

Reputation: 1481

How to redirect to view page using mongoDB and node.js

I am new with node.js, mongoDB and jade.

To redirect to userlist page I have following route in /routes/index.js

router.get('/userlist', function(req, res) {
    var db = req.db;
    var collection = db.get('usercollection');
    collection.find({},{},function(e,docs){
        res.render('userlist', {
            "userlist" : docs
        });
    });
});

This route redirects me to userlist page. There I display a list of all users. Here I have a link on each record to view details:

following is my userlist.jade

extends layout

    block content
        h1.
            User List
        ul
            each user, i in userlist
                li
                    a(href="/viewuser/id/#{user._id}")=user.username

This:

a(href="/viewuser/id/#{user._id}")=user.username

Gives me:

<a href="/viewuser/id/56aca898d9b0de79214ae381">Dhara</a>

Now I don't know what route should be there for view details on click of the link and how to get selected record data for view screen.

Upvotes: 4

Views: 1599

Answers (2)

Edu
Edu

Reputation: 1

maybe you need to specify the view in your app server file

app.get('/userlist', function(req, res){ res.render('userlist', { title: 'Your_Title' }); });

I hope to be helpful!

Upvotes: 0

I use a clear and distributed stack MEAN.js, with a yeoman constructor that will help you to build secure and good-practice programming applications.

This is the way I get a concrete user data. It´s a little more spread than your code but it´s clear.

Hope it helps!

routes.js

app.use('/api/users', require('./api/user'));

api/user/index.js

var controller = require('./user.controller');
router.get('users/:id', controller.show);

user.controller.js:

// Get a single user
exports.show = function(req, res) {
  User.findById(req.params.id, function (err, user) {
    if(err) { return handleError(res, err); }
    if(!user) { return res.send(404); }
    return res.json(user);
  });
};

then I´ll call for a user with an url like users/xxxxxx where xxxx is the user id. Then if you want to do it like /viewuser/id/xxxxxx you will need to change the route like this:

api/user/index.js

var controller = require('./user.controller');
router.get('viewuser/id/:id', controller.show);

user.controller.js:

// Get a single user
exports.show = function(req, res) {
  User.findById(req.params.id, function (err, user) {
    if(err) { return handleError(res, err); }
    if(!user) { return res.send(404); }
    return res.json(user);
  });
};

Upvotes: 1

Related Questions