Tag: 路由

Node.js Express DELETE路由不起作用

当试图删除它返回的项目:不能GET /post routes.js app.delete('/posts/:id', function(req, res){ console.log("Deleting"); Post.findById( req.params.id, function ( err, post ){ post.remove( function ( err, post ){ res.render('posts.ejs'); }); }); }); posts.ejs <% posts.forEach( function( post ){ %> <p><%= post._id %></p> <p><%= post.title %></p> <p><%= post.content %></p> <a href="/posts/<%= post._id %>" method='delete'>Delete</a> <% }); %> 任何指针,将不胜感激:)谢谢

正确处理匹配两个路由的URL

我有两个url如下: http://domain.com/api/locations/codeforlocation http://domain.com/api/locations/import 在我的路由文件中,我按照相同的顺序有以下几行: app.put('api/locations/:location', require('./api/locations.js').put); app.put('api/locations/import, require('./api/locationsimport.js').put); 但是当我打电话“ http://domain.com/api/locations/import ”时,这总是只会调用这个“ http://domain.com/api/locations/codeforlocation ” 如何区分我的path参数?

快速路由器找不到

我使用如下的快递生成器创build了一个快速项目 express project_name 和 npm install 这是我的app.js var express = require('express'); var path = require('path'); var favicon = require('serve-favicon'); var logger = require('morgan'); var cookieParser = require('cookie-parser'); var bodyParser = require('body-parser'); var routes = require('./routes/index'); var users = require('./routes/users'); var app = express(); // view engine setup app.set('views', path.join(__dirname, 'views')); app.set('view engine', 'jade'); // uncomment […]

安排路由与authentication中间件

我有很多路线。 他们大多需要authentication。 一个不。 他们来了: router.get('/secure1', function (req,res) {…}) router.get('/secure2', function (req,res) {…}) router.get('/secure3', function (req,res) {…}) router.get('/:id', function (req,res) {…}) 假设我没有公共路线。 在页面的顶部,我可以把一个安全检查中间件,一切都很好。 它只会让安全的连接,并将redirect非安全。 router.use(function (req,res,next) { securityCheck() next() }) router.get('/secure1', function (req,res) {…}) router.get('/secure2', function (req,res) {…}) router.get('/secure3', function (req,res) {…}) router.get('/:id', function (req,res) {…}) 这将工作。 这使所有的安全路线安全,但它阻止我从公共路线('/:id')。 2.我可以把公共路线移到顶端: router.get('/:id', function (req,res) {…}) router.use(function (req,res,next) { […]

在ExpressJS中将参数从路由器传递到控制器

我有一个定义如此的路线 router.route('/:id/organisers').get(HackathonControllers.getHackathonRoles()); 现在, getHackathonRoles是一个定义如下的控制器: function getHackathonRoles(role, req, res, next) { console.log(role); res.status(200).json({ message: `Successfully updated Hackathon ${hackathonId}, published status updated to ${hackathonPublishedStatus}` }) } 我理想要做的是通过定义多个路由器端点来传递angular色。 就像是: router.route('/:id/organisers').get(HackathonControllers.getHackathonRoles(role='organiser')); 和 router.route('/:id/volunteer').get(HackathonControllers.getHackathonRoles(role='volunteer')); 所以基本上我想重用getHackathonRoles方法,并希望避免为不同的angular色重写相同的方法。 理想情况下,我应该能够在控制器中的console.log(role) 。 截至目前,这失败了,我得到的错误: router.route('/:id / organizers')。get(_hackathonController2.default.getHackathonRoles(role ='organizer')); 我该如何解决这个问题,并保持干爽? 我不想将参数合并到像/:id/?这样的端点中 参数就像role=organiser或role=volunteer等

无法在Express应用程序中连接路线

我有以下结构 project -app/ –controllers/ —home.js –models/ —home.js –views/ —home.html -db/ –db.js -index.js 我的控制器home.js看起来像这样: var express = require('express'); var router = express.Router(); var database = require('../models/home'); var path = require('path'); router.get("/", function(request, response) { response.sendFile(path.join(__dirname, '../views', 'home.html')); }); module.exports = router; 现在我想使这条路线有用,所以在我的index.js有: var express = require('express'); var app = express(); var port = 3000; app.use(require('./app/controllers/home')); //<– […]

麻烦组织expressjs路线

我正在跟随这篇文章 ,这篇文章描述了一种快速组织路线的好方法。 我遇到一个问题,虽然当我尝试访问我从我的main.js文件导出的函数。 当我curl“本地主机/用户/用户名”时,我得到一个404错误 //the routes section of my my app.js file app.get('/', routes.index); app.get('/user/:username', routes.getUser); //my index.js file require('./main'); require('./users'); exports.index = function(req, res) { res.render('index', {title: 'Express'}); }; //my main.js file exports.getUser = function(req, res){ console.log('this is getUser'); res.end(); }; —-编辑我的解决scheme—- 这是我一起去的解决scheme,也许有人会觉得它有用。 我也很乐意听取有关今后是否会给我带来什么问题的build议。 //——-The routes in my app.js file now look like this. […]

NodeJS + Express 3 – 在路由中斜线,然后固定操作

我遇到了这条路线的麻烦: app.get('/project/:handle/browse/:filepath(.*)/children', files.children); //getting contents of any node in the directory structure 我想要的路线来parsingurl,其中包括:filepath参数,其中可以包括斜杠,然后一个/children操作。 (.*)是我对于:filepath参数放置正则expression式的失败尝试。 我想使用这样的schemepermalinking的目的,所以移动一些路由参数是不是一个选项,和URI编码会使他们丑陋…我环顾四周,但似乎所有的答案在stackoverflow是齿轮在url的末尾加上斜线的参数,如: app.get('/project/:path', files.children); 有任何想法吗? 谢谢!

nodejs routing:除第一页外的所有具有validation的路由

我正在使用护照进行login。 我想拥有除'/'以外'/'所有路由都需要login。 我有一个 ensureAuthenticated 函数,它检查我是否已通过身份validation。 我宁愿不喜欢把中间件调用放到每个路由中: app.get('/first', ensureAuthenticated,…) app.get('/second', ensureAuthenticated,…) 有没有一种方法来分配ensureAuthenticated除'/'以外'/'所有路线?

使用NodeJS作为HTTP服务器 – 如何避免spagetti?

我想使用nodejs作为我正在处理的项目的光Web服务器。 我主要是一个PHP程序员,所以我这样做的方式是不同于我习惯的。 在这个应用程序中,我使用angular度来请求一些数据。 我想将其格式设置为“/ get / some_data”。 在我的节点端,我使用连接并静态指向我的http目录。 现在,当我提出一些数据请求时,人们推荐的唯一方法就是查找请求并将其传回。 这比我习惯于每个文件处理请求的文件结构要less得多。 var connect = require("connect"); var app = connect(); app.use(connect.static("/my_http_dir")); app.use(function(req, res) { if(req.originalUrl == "foo") { // do something relating to foo } else if(req.originalUrl == "bar") { // do something relating to bar } else { // do nothing } }); connect.createServer(app).listen(80); 那么用什么来组织呢? 我需要做一个获取处理程序,把处理程序,删除处理程序,后处理程序等 […]