node.js Error: Not Found

5.2k Views Asked by At

I'm a node.js beginner. I'm trying to make a page for users to input data into MongoDB. I followed a tutorial online, but the error below popped out. Have already double checked my codes are completely the same.

Do I have to install something else?

Error: Not Found

at /.../testproject/app.js:44:13
at Layer.handle [as handle_request] (/.../testproject/node_modules/express/lib/router/layer.js:82:5)
at trim_prefix (/.../testproject/node_modules/express/lib/router/index.js:302:13)
at /.../testproject/node_modules/express/lib/router/index.js:270:7
at Function.proto.process_params (/.../testproject/node_modules/express/lib/router/index.js:321:12)
at next (/.../testproject/node_modules/express/lib/router/index.js:261:10)
at /.../testproject/node_modules/express/lib/router/index.js:603:15
at next (/.../testproject/node_modules/express/lib/router/index.js:246:14)
at Function.proto.handle (/.../testproject/node_modules/express/lib/router/index.js:166:3)
at router (/.../testproject/node_modules/express/lib/router/index.js:35:12)

and here is my index.js

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

router.get('/', function(req, res, next) {
           res.render('index', { title: 'New Title' });
           });



router.get('/userlist', function(req, res) {
   var db = req.db;
   var collection = db.get('usercollection');
   collection.find({},{},function(e,docs){

    var name = [];
    var objKey = Object.keys(docs);
    objKey.forEach(function(objectid){
      var itemkeys = Object.keys(docs[objectid]);
      itemkeys.forEach(function(itemkey) {
        var itemvalue =docs[objectid][itemkey];
        console.log(objectid+': '+itemkey+' = '+itemvalue);
        if (itemkey == "username") {
          name.push(itemvalue);
        }
      })
    })
       console.log(name);
       res.render('userlist', {
          "userlist" : name
       });
    });
});


/* POST to Add User Service */
router.post('/adduser', function(req, res) {

    // Set our internal DB variable
    var db = req.db;

    // Get our form values. These rely on the "name" attributes
    var userName = req.body.username;
    var Email = req.body.email;

    // Set our collection
    var collection = db.get('usercollection');

    // Submit to the DB
    collection.insert({
        "username" : userName,
        "email" : Email
    }, function (err, doc) {
        if (err) {
            // If it failed, return error
            res.send("There was a problem adding the information to the database.");
        }
        else {
            // If it worked, set the header so the address bar doesn't still say /adduser
            res.location("userlist");
            // And forward to success page
            res.redirect("userlist");
        }
    });
});

/* GET home page. */
router.get('/newuser', function(req, res) {
           res.render('newuser', { title: 'Add New User' });
           });

module.exports = router;

and here is from line 44 from app.js

// catch 404 and forward to error handler
app.use(function(req, res, next) {
  var err = new Error('Not Found');
  err.status = 404;
  next(err);
});
1

There are 1 best solutions below

0
On BEST ANSWER

http://cwbuecheler.com/web/tutorials/2013/node-express-mongo/ Search ahead to where it says "Go ahead and submit. Enjoy the 404 error. We're about to fix that."

You just saw the 404 error that the tutorial author says you'd see. Follow along in the tutorial and presumably you'll add the necessary POST code in the router.

And like I said above, you want to visit the /newuser page in order to enter the new user.