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);
});
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.