当前位置: 首页 > 知识库问答 >
问题:

Node.js/REST:如何从url_id

吉泰宁
2023-03-14

我遵循了下一个教程:http://cwbuecheler.com/web/tutorials/2014/restful-web-app-node-express-mongodb/ 过了几天,我就把一切都做好了,但是更新用户数据库是读者自己的事。

我已经编辑了翡翠模板,并添加了一些javascript,用于更新链接上的点击事件。我甚至可以从列出的测试用户那里检索用户ID。用警报测试了这个,可以了。

单击事件的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/\u id(\u id是一个长字符串,由MongoDB自动添加为键)。但我如何将其添加到路由器功能中?

此_id必须放置在集合的where部分。找到(…),但是我如何从url中提取这个呢?

提前感谢您的帮助!

复制标记不正确,该标记与查询参数有关:?颜色=红色,如何访问variabe颜色?,mines是一个REST系统,其中id是url本身的一部分。

共有2个答案

陈夜洛
2023-03-14

您可以更改:

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

致:

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

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

吴安和
2023-03-14

你需要改变

router.get('/userdata'...

致:

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

: id-它的参数。如果你在node.js使用身体解析器,检查req.body.params.

 类似资料:
  • 问题内容: 我目前正在开发一个个人Node.js(>=8.0.0)项目,该项目要求我调用C子例程(以缩短执行时间)。我试图使用WebAssembly来执行此操作,因为我需要最终代码在浏览器中打开时才兼容。 我已经使用Emscripten将C代码编译为WebAssembly,但之后不知道如何进行。 在正确方向上的任何帮助都将非常有用。谢谢! 问题答案: 您可以构建没有JS胶水文件的.wasm文件(独

  • 我开始用node.js、express和MongoDB规划一个REST API。该API为一个网站(公共和私人区域)提供数据,之后可能还会为一个移动应用程序提供数据。前端将使用AngularJS开发。 几天来,我读了很多关于保护REST API的文章,但我没有得到最终的解决方案。据我理解就是用HTTPS来提供一个基本的安全性。但如何在用例中保护API: > 仅允许网站/应用程序的访问者/用户获取网

  • 问题内容: 当我查询此问题时,发现了很多帖子,但是它们都涉及如何从浏览器将文件上传到node.js服务器。我想将文件从node.js代码上传到另一台服务器。我试图基于对node.js的有限了解来编写它,但是它不起作用。 上面的函数被其他生成数据的代码调用。 我尝试使用curl -F“ file = @ ”上传相同的数据文件,并且上传成功。但是我的代码失败了。服务器返回一个特定于应用程序的错误,提示

  • 问题内容: 我卸载了先前版本的node.js(0.8.11),并从node.js网站下载了最新版本0.10.24并进行了安装。但是,运行后,仍然表明我正在运行v0.8.11。显然,在卸载过程中遗留了一些东西,这导致我在尝试通过npm添加模块时遇到各种错误。我已经看到了针对OSX和Linux的解决方案,但找不到Windows的任何东西。我正在运行Windows 7 64位。 问题答案: 如何从Win

  • 问题内容: 是否有一种标准方法要求节点模块位于某个URL(而不是本地文件系统)上? 就像是: 目前,我只是将文件提取到一个临时文件中,并要求这样做。 问题答案: 您可以使用http.get方法获取模块,并使用vm模块方法runInThisContext和runInNewContext在沙箱中执行它。 例 IMO,在没有其他选择的情况下,在服务器应用程序运行时内部执行远程代码可能是合理的。并且仅当您

  • 问题内容: 我想从我的node.js应用程序ping服务器。 那可行吗? 谢谢 问题答案: 您可以用来调用系统ping命令