Ich baue meine erste Knoten/Express-App und bin this tut.Express over Node.js - TypeError: Kann die Eigenschaft 'forEach' von undefined nicht lesen
Ich bin an einem Punkt, wo ich versuche, alle JSON-Daten zu bekommen und es in ein Array zu setzen, um an die Vorlage gesendet und gerendert zu werden. Wenn ich versuche, die App via CLI auszuführen, erhalte ich folgende Fehlermeldung:
Verzeichnisstruktur
Die Datenausgabe an dem var blogsurlall Standort
hellotest.js
var routes = require('./routes/index');
var express = require('express');
var app = express();
var request = require("request");
var blogsurlall = "https://[JSON export URL location configured in a Drupal 8 view]";
app.set('view engine','ejs');
var server = app.listen (2000, function(){ console.log('Waiting for you on port 2000'); });
/* Get all global blogs data */
request({
url: blogsurlall,
json: true
}, function (error, response, body) {
if (!error && response.statusCode === 200) {
blogsdata_all = body;
}
// Create blogs array for footer.
var blogs = [];
// Fill up the array with blogs.
blogsdata_all.blogs.forEach(function(item){
blogs = blogs.concat(item);
});
app.locals.blogsdata = blogs;
});
app.use('/', routes);
index.js
var express = require('express');
var routes = express.Router();
routes.get('/', function(req, res){ res.render('default',{title: 'Home', body: 'blogsdata'}); });
routes.get('/about-us', function(req, res){ res.send('<h1>Lucius Websystems</h1>Amsterdam, The Netherlands'); });
routes.get('/about/:name?', function(req, res){ var name = req.params.name; res.send('<h1>' +name +'</h1>About text'); });
/* GET Blog detail page. */
routes.get('/blog/:blogid', function(req, res, next) {
// Place json data in a var.
var blogsdata = req.app.locals.blogsdata;
// Create array.
var blogItem = [];
// Check and build current URL
var currentURL = '/blog/' + req.params.blogid;
// Lop through json data and pick correct blog-item based on current URL.
blogsdata.forEach(function (item) {
if (item.title == currentURL) {
blogItem = item;
}
});
if (blogItem.length == 0) {
// Render the 404 page.
res.render('404', {
title: '404',
body: '404'
});
} else {
// Render the blog page.
res.render('blog-detail', {
blog: blogItem
});
}
});
module.exports = routes;
Von dem CLI Fehler scheint es keine Blog-Daten auch in das Array gelesen werden zurückgegeben.
Ich habe das Tutorial mehrere Male sorgfältig durchgegangen und ich denke, dass es Schritte gibt, die angedeutet werden können, dass ich vermisse.
Kann mir bitte jemand helfen, zu verstehen, wie man die Blogdaten erhält, damit sie in das Array eingelesen und an meine Vorlage ausgegeben werden können?
Auch offen für Vorschläge zur Problembehandlung in Kommentaren.
Danke fürs Lesen!
Das bedeutet, dass 'blogsdata_all.blogs' ist wahrscheinlich nicht das Array, das Sie denken, dass es ist. Hast du überprüft, was es eigentlich ist? – Carcigenicate