2017-08-12 18 views
0

Ich bin ziemlich neu in der Programmierung und möchte eine Nachrichten/Forum-Seite für die Praxis erstellen, mit einer der Routen ist/post/postID/postTitle, um den einzelnen Beitrag anzuzeigen. Als ich es mit nur versuchte: postID es funktionierte, aber jetzt, dass ich fügte hinzu: postTitle, wenn ich auf die URL gehe, heißt es: "TypeError: Kann Eigenschaft 'postID' von undefined nicht lesen."TypeError: Kann die Eigenschaft 'postID' von undefined nicht lesen

Mein app.js:

var express = require("express") 
    app = express() 
    bodyParser = require("body-parser"); 

app.use(express.static("public")); 
app.use(bodyParser.urlencoded({extended: false})); 
app.set("view engine", "ejs"); 

// ROUTES 

// Root 
app.get("/", function(req, res){ 
    res.render("index"); 
}); 

// Login 
app.get("/login", function(req, res){ 
    res.render("login"); 
}); 

// Register 
app.get("/register", function(req, res){ 
    res.render("register"); 
}); 

// Home 
app.get("/home", function(req, res){ 
    res.render("home"); 
}); 

// Posts 
app.get("/posts", function(req, res){ 
    res.render("posts"); 
}); 

// Post 
app.get("/post/:postID/:postTitle", function(req, res){ 
var postID = req.params.postID; 
var postTitle = req.params.postTitle; 

res.render("post", {postID: postID},{postTitle: postTitle}); 
}); 



// SERVER 
app.listen(4000, function(error){ 
    if(error){ 
    console.log("OH NOES, SERVER CAN'T START!"); 
    console.log(error); 
    } else { 
    console.log("Server has started."); 
    } 
}); 

Der Fehler:.

TypeError: Cannot read property 'postID' of undefined 
    at C:\Users\jayth\Desktop\Centurion\Projects\August 2017\Wabbit.gg - #PWGG08102017\Coding\app.js:38:26 
    at Layer.handle [as handle_request] (C:\Users\jayth\Desktop\Centurion\Projects\August 2017\Wabbit.gg - #PWGG08102017\Coding\node_modules\express\lib\router\layer.js:95:5) 
    at next (C:\Users\jayth\Desktop\Centurion\Projects\August 2017\Wabbit.gg - #PWGG08102017\Coding\node_modules\express\lib\router\route.js:137:13) 
    at Route.dispatch (C:\Users\jayth\Desktop\Centurion\Projects\August 2017\Wabbit.gg - #PWGG08102017\Coding\node_modules\express\lib\router\route.js:112:3) 
    at Layer.handle [as handle_request] (C:\Users\jayth\Desktop\Centurion\Projects\August 2017\Wabbit.gg - #PWGG08102017\Coding\node_modules\express\lib\router\layer.js:95:5) 
    at C:\Users\jayth\Desktop\Centurion\Projects\August 2017\Wabbit.gg - #PWGG08102017\Coding\node_modules\express\lib\router\index.js:281:22 
    at param (C:\Users\jayth\Desktop\Centurion\Projects\August 2017\Wabbit.gg - #PWGG08102017\Coding\node_modules\express\lib\router\index.js:354:14) 
    at param (C:\Users\jayth\Desktop\Centurion\Projects\August 2017\Wabbit.gg - #PWGG08102017\Coding\node_modules\express\lib\router\index.js:365:14) 
    at Function.process_params (C:\Users\jayth\Desktop\Centurion\Projects\August 2017\Wabbit.gg - #PWGG08102017\Coding\node_modules\express\lib\router\index.js:410:3) 
    at next (C:\Users\jayth\Desktop\Centurion\Projects\August 2017\Wabbit.gg - #PWGG08102017\Coding\node_modules\express\lib\router\index.js:275:10) 
+0

Sorry, das ist, was es war, bevor ich es getestet habe. // Beitrag app.get ("/ Post /: postID /: postTitle", Funktion (Fehler, erf, res) {var postID = req.params.postID; var postTitle = req.params.postTitle; if (Fehler) { console.log ("Seite konnte nicht gefunden werden."); } else { console.log ("Seite gefunden wurde.");} res.render ("post ", {postID: postID}, {postTitle: postTitle}); }); –

+0

Ich habe gerade den Post bearbeitet. –

+1

Was schreibst du für eine Route ein? Oder versagt der Code, bevor Sie die Route ausprobieren können? –

Antwort

-1

Sie können res.send() anstelle von res.render() verwenden, und diese nutzen, um die postID bekommen und postTitle zusammen. Hier ist der Code res.send("postID:"+postID+" "+"postTitle:"+postTitle);

+0

Dies löst das Problem des OP nicht. OP ruft die Funktion 'render' auf, weil er eine Vorlage mit den Details eines Posts rendert. – mscheker

Verwandte Themen