Node.js / REST:如何从 url 获取 _id
Posted
技术标签:
【中文标题】Node.js / REST:如何从 url 获取 _id【英文标题】:Node.js / REST: How to get _id from url 【发布时间】:2015-12-22 02:21:18 【问题描述】:我已经关注下一个教程:http://cwbuecheler.com/web/tutorials/2014/restful-web-app-node-express-mongodb/ 几天后,我完成了所有工作,但更新用户数据库是为了读者自己。
我已经编辑了翡翠模板并为更新链接上的点击事件添加了一些 javascript。 我什至可以从列出的 testuser 中检索用户 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/_id(_id 是一个长字符串,由 MongoDB 自动添加为键)。但是如何将其添加到此路由器功能中?
这个_id必须放在collection.find(....)的where部分,但是如何从url中提取呢?
提前感谢您的帮助!
重复的标记不正确,那个是关于查询参数:?color=red,如何访问变量颜色?,mines 是一个 REST 系统,其中 id 是 url 本身的一部分。
【问题讨论】:
这是一个“表达”问题,答案可在"request" 对象的文档中找到。事实上,这是页面上的第一个示例。 让我在谷歌上帮你搜索一下.. :) 也是一个副本。 How to access the GET parameters in Express.js or Node.js?的可能重复 那一个是关于一个get参数:?color=red,我怎样才能访问variabe颜色?我的问题是关于 REST 系统,所以没有参数 @Blakes:感谢您提供的链接。 【参考方案1】:你需要改变
router.get('/userdata'...
收件人:
router.get('/userdata/:id'...
:id - 它的参数。如果你在 node.js 中使用 body-parser 检查 req.body.params。
【讨论】:
来吧,它是重复的。不要回答这样的问题,因为你似乎是那种只想要一些分数的人:) 有时很难找到“简单”的解决方案。不是每个人都有出色的谷歌技能,有时你会在 50 多个示例之后陷入困境。有时重复标志设置得太快。我真的很尊重这个问答网站的规则,但有时它是在一个真正的“非常严格”的方式中。给个简单的答案没有错,这个真的很简单,但也让我大开眼界!我并不懒惰,花了 3 天时间来完成这个例子,让它运行和理解。有时,像我这样的人,到处搜索,但并不总是在正确的地方。这也是一个学习的过程! 您从未打开过文档,或者您应该已经看过了。这与谷歌搜索技巧无关,而是首先尝试找到它。 @Terradon 通常设置重复标志是因为您自己没有找到它,并且有人试图通过将您指向一个已经存在的答案来“帮助”您。近距离投票不是侮辱,而是为了指导您或保护您免受其他人提交错误答案的影响。如果您的问题持续很长时间,通常会发生这种情况。感谢这位好人的帮助,而不是如此防御和冒犯。在这里查看事物的更好方法。重复的答案并没有什么问题(尽管我不希望这样),只要两者都得到承认。 感谢您的解释,我没有冒犯的意图。当然,我对在这里获得的所有免费建议感到满意。由于我在此示例上花费的最后 3 天,一定很累:)。 .【参考方案2】:你改变了:
$.getJSON( '/users/userdata/' + userID, function( data )
收件人:
$.getJSON( '/users/userdata/?id=' + userID, function( data )
并在节点中使用 - req.query.id。
【讨论】:
这是一种可能的方式,但我不想在 url 中使用参数。以上是关于Node.js / REST:如何从 url 获取 _id的主要内容,如果未能解决你的问题,请参考以下文章
如何从 php 或 node.js 获取 websocket url 路径
Node.js REST API 从 MongoDB 获取数据
Node.js,如何从我必须在其中输入用户名和密码的某个 url 获取 JSON 元素?
如何在 Node.js 中进行远程 REST 调用?任何卷曲?