如何在nodejs中使用id更新记录

时间:2015-07-27 09:04:17

标签: javascript node.js mongodb

我是Node Js的新手,并试图学习它。我目前正在学习本教程:http://cwbuecheler.com/web/tutorials/2013/node-express-mongo/但不完整。

我想,如果我点击用户列表中的任何用户,它将转到新页面并显示表单中的记录以进行更新。我不知道如何发送数据onclick,从数据库中找到记录并在表单中显示更新。

这是包含所有功能的索引文件:

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;

先谢谢,请帮助我指导

1 个答案:

答案 0 :(得分:0)

您似乎想要使用findAndModifydocs

使用您的代码可以实现类似的更新路由。

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}]}