2015-07-27 2 views
0

Я новичок в Node Js и пытаюсь ее изучить. В настоящее время я следую этому руководству: http://cwbuecheler.com/web/tutorials/2013/node-express-mongo/, но его неполное.Как обновить запись, используя id в nodejs

Я хочу, если я нажму на любого пользователя из списка пользователей, он перенесет меня на новую страницу и покажет запись в форме для обновления. Я не знаю, как отправить данные onclick, найти запись из db и показать ее внутри формы для обновления.

Вот индексный файл со всеми функциями:

var express = require('express'); 
var router = express.Router(); 

/* GET home page. */ 
router.get('/', function(req, res, next) { 
    res.render('index', { title: 'Express' }); 
}); 

/*Get Hello world page*/ 
router.get('/helloword', function(req, res){ 

    res.render("Helloworld", {title:'Hello, World!'}); 
}); 

/*Get UserList*/ 
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 
     }); 
    }); 
}); 

/*Get New User Page*/ 
router.get('/newuser', function(req, res){ 
    res.render('newuser',{title: 'Add New User'}) 
}); 

/* POST to Add User Service */ 
router.post('/adduser', function(req, res) { 

    // Set our internal DB variable 
    var db = req.db; 

    // Get our form values. These rely on the "name" attributes 
    var userName = req.body.username; 
    var userEmail = req.body.useremail; 

    // Set our collection 
    var collection = db.get('usercollection'); 

    // Submit to the DB 
    collection.insert({ 
     "username" : userName, 
     "email" : userEmail 
    }, function (err, doc) { 
     if (err) { 
      // If it failed, return error 
      res.send("There was a problem adding the information to the database."); 
     } 
     else { 
      // And forward to success page 
      res.redirect("userlist"); 
     } 
    }); 
}); 

module.exports = router; 

Заранее спасибо, пожалуйста, помогите мне руководство

+0

Можете ли вы показать Client- боковой код? – Mark

+0

Ваш вопрос касается разработки интерфейса, а не node.js. Сначала проверьте свой POST с помощью https://www.getpostman.com/docs, если это работает, затем запустите форму переднего конца –

+0

@Mark, я уже разместил файл index.js. файлы останова - файлы ejs –

ответ

0

Похоже, что вы хотите использовать findAndModify (docs)

Работа с компьютером вы могли бы реализовать такой маршрут обновления.

router.post('/user/:userId', function (req, res) { 

    // Set our internal DB variable 
    var db = req.db; 

    // Get our form values. These rely on the "name" attributes 
    var userName = req.body.username; 
    var userEmail = req.body.useremail; 

    // Set our collection 
    var collection = db.get('usercollection'); 

    collection.findAndModify(
      {_id: req.query.userId}, // query 
      [['_id', 'asc']], // sort order 
      { 
       $set: { 
        "username": userName, 
        "email": userEmail 
       } 
      }, // replacement 
      {}, // options 
      function (err, object) { 
       if (err) { 
        console.warn(err.message); // returns error if no matching object found 
       } else { 
        console.dir(object); 
       } 
      }); 

}); 

Однако это не имеет никакого проверку, чтобы убедиться, что пользователь имеет необходимые разрешения для обновления этого, убедитесь, что вы добавить что-то вроде запроса

{$and: [{_id: req.query.userId}, {createdBy: req.user}]}

Смежные вопросы