Node.js / REST:如何从url

时间:2015-09-24 13:01:37

标签: javascript node.js express

我已经按照下一个教程:http://cwbuecheler.com/web/tutorials/2014/restful-web-app-node-express-mongodb/ 几天后我完成了所有工作,但更新用户数据库是为了读者自己。

我编辑了jade模板,并在更新链接上为点击事件添加了一些javascript。 我甚至可以从列出的testuser中检索userID。用警报测试了这个,没问题。

点击事件的javascript:global.js

function showUser2Edit(event){
    event.preventDefault();

    var userID = $(this).attr('rel');
    // alert (userID);// _id from MongoDB, ok!

    // jQuery AJAX call for JSON
    $.getJSON( '/users/userdata/' + userID, function( data ) {
        // populate edit form
        alert (JSON.stringify(data));
    }
}  

在users.js(服务器端node.js)

/*
 * GET userData
 */
router.get('/userdata', function(req, res) {
    var db = req.db;
    var collection = db.get('users');
        collection.find({_id: ?????? },{},function(e,docs){
        res.json(docs);
    });
});

2个问题我真的不知道如何解决它们:

Ajax调用将是:users / userdata / _id(_id是一个长字符串,由MongoDB自动添加为键)。但是如何将此添加到此路由器功能?

这个_id必须放在collection.find(....)的where部分,但是如何从url中提取这个?

提前感谢您的帮助!

复制标记不正确,一个是查询参数:?color = red,如何访问变量颜色?,mines是一个REST系统,其中id是url本身的一部分。

2 个答案:

答案 0 :(得分:2)

您需要更改

router.get('/userdata'...

要:

router.get('/userdata/:id'...

:id - 它的参数。如果你在node.js中使用body-parser来检查req.body.params。

答案 1 :(得分:0)

你改变了:

$.getJSON( '/users/userdata/' + userID, function( data ) {

要:

 $.getJSON( '/users/userdata/?id=' + userID, function( data ) {

并在节点中使用 - req.query.id。