2017-06-07 5 views
1

Ich bin ein Anfänger für Node und ich versuche eine mehrseitige Anwendung mit Mongo (Mlab), Express und Nodejs zu erstellen. Ich versuche, zu einer Seite addUser zu navigieren, die POST Anfragen annimmt. Aber ich bekomme immer den FehlerNodejs: Ich kann keine Route bekommen, wenn ich add.post verwende

Kann nicht GET/addUser

wenn ich add.post auf sie aus. Aber es funktioniert, wenn ich add.get

Hier verwenden ist app.js

var express = require('express'); 
var mongoose = require('mongoose'); 
var bodyParser = require('body-parser'); 
var cors = require('cors'); 
var path = require('path'); 
const MongoClient = require('mongodb').MongoClient; 

var app = express(); 
app.set('view engine', 'ejs') 
const port = 3000; 

MongoClient.connect('mongodb://<user>:<password>@ds111882.mlab.com:11882/serene-brushlands-55292-db', function(err, database) { 
    if(err) return console.log(err); 
    db = database 
    app.listen(port, function() { 
    console.log('Server started at port:'+port); 
    }); 
}); 

var urlencodedParser = bodyParser.urlencoded({ extended:false }); 

app.get('/', function(req, res) { 
    res.sendFile(__dirname+'/index.html'); 
}); 

app.post('/addUser', urlencodedParser, function(req, res) { 
    res.render('addUser'); 
    // db.collection('users').save(req.body, function(err, result) { 
    // if (err) return console.log(err); 
    // console.log('saved to database'); 
    // res.redirect('/'); 
    // }) 
    // console.log(req.body); 
}); 

nicht sicher, was ich falsch mache.

Hier ist addUser.ejs:

<!DOCTYPE html> 
<html lang="en"> 
<head> 
    <meta charset="UTF-8"> 
    <title>MY APP</title> 
</head> 
<body> 
    <form action="/addUser" method="POST" > 
    <input type="text" placeholder="username" name="username"> 
    <input type="text" placeholder="specialty" name="specialty"> 
    <input type="text" placeholder="address" name="address"> 
    <!-- <input type="file" name="picture"> --> 
    <button type="submit">Submit</button> 
    </form> 
</body> 

Antwort

2

Du wirst brauchen sind ein get für addUser hinzuzufügen:

app.get('/addUser', function(req, res) { 
    res.render('addUser'); 
}); 
+0

Aber diese Seite hat Einzelheiten Formulare, die per Post Antrag gestellt werden müssen, so shouldn ist es nicht "add.post"? Außerdem habe ich vergessen, den 'urlencodedParser' Parameter vorher hinzuzufügen, aber ich tat es jetzt. –

+0

Sie brauchen beides. Holen Sie sich zum Anzeigen der Seite und Post für das Formular –

+0

Also sagen Sie, ich sollte eine zusätzliche Methode add.get hinzufügen (Ansicht, Funktion) zusätzlich zu add.post (Ansicht, bodyparser, Funktion) oder macht die "Methode = POST" in die Form genügt? –

Verwandte Themen