NodeJS + Express 404基本路由

时间:2015-03-11 23:32:11

标签: javascript node.js express

我之前已经创建了一个教程Node / Express应用程序并且工作正常,在尝试复制它并创建我的新项目(ubuntu,然后是windows)之后,基本路由每次都失败并且404s,非常令人沮丧!

我试图接触/finddrink/margarita或任何我想要的饮料。

这是我的app.js及相关内容:

var routes = require('./routes/index');
var users = require('./routes/users');

var app = express();

app.use('/', routes);
app.use('/users', users);

这是我的index.js,在routes文件夹中:

var express = require('express');
var router = express.Router();

/* GET home page. */
router.get('/', function(req, res, next) {
  res.render('index', { title: 'Express' });
});

/*GET drink recipe*/
router.get('/findrink/:name', function (req,res){
    var db = req.db;
    var drinkName = req.params.name;
    db.collection('recipes').findOne({name: drinkName}, function (err, result) {
        res.send(result);
    });
});
module.exports = router;

最后,尝试访问此GET的函数:

function loadDrink(drinkToGet) {
  var address = '/finddrink/' + drinkToGet;

  $.getJSON(address, function (item) {
    document.getElementById('drinkTitle').innerHTML = item.name;
  });
};

我正在使用正在运行的项目阅读笔记本电脑上的代码,然后在桌面上使用几乎完全相同的代码阅读,并且似乎无法找到任何错误,任何想法?谢谢!

1 个答案:

答案 0 :(得分:0)

你有一个错字:

您的路线在index.js文件中设置为findrink:

router.get('/findrink/:name', function (req,res){
});

但是你要求使用双d进行finddrink。

您应该考虑将路线重命名为更安静的方法:

router.get('/drinks/:name', function (req,res){
});

router.get('/drinks/find/:name', function (req,res){
});

这样您就可以将API扩展到更多路径:

// POST /drinks/ creates new drink
router.post('/drinks/', function (req,res){
});

// PUT /drinks/:name edits a drink by na,e
router.put('/drinks/:name', function (req,res){
});

// DELETE /drinks/:name deletes a drink by name
router.delete('/drinks/:name', function (req,res){
});