【发布时间】:2020-01-22 17:14:12
【问题描述】:
我正在使用本地 .json 文件作为我的小型 Web 应用程序的数据库。它可以正常工作,我可以从中检索数据,但是当我查看控制台时,我看到错误 TypeError: Cannot read property 'name' of undefined... 每次出现两次。错误不一致,我无法正确复制它,我不明白是什么原因造成的。
JSON
{
"Faction1": {
"name": "Lorem Ipsum",
"id": "lorem-ipsum",
"content": {
"colors": {
"col1": "red",
"col2": "white",
"col3": "grey"
}
}
}
}
App.js
//jshint esversion:6
const express = require("express");
const bodyParser = require('body-parser');
const favicon = require('serve-favicon');
const app = express();
app.set('view engine', 'ejs');
app.use(favicon(__dirname + '/public/favicon.ico'));
app.use(bodyParser.urlencoded({ extended: true }));
app.use(express.static(__dirname + '/public'));
app.use('/scripts', express.static( __dirname + '/node_modules/'));
const factionsDb = require(__dirname + '/views/data/factions.json');
JSON.stringify(factionsDb);
// -------------------------------------------------------------------------- //
app.get('/', (req, res) => {
res.render('pages/index', {
pageTitle: "App Name"
});
});
app.get('/factions', (req, res) => {
res.render('pages/product-list', {
parentPage: "'/'",
pageTitle: "Factions",
section: "factions",
productsList: factionsDb
});
});
app.get('/factions/:productId', (req, res) => {
let requestedProductId = req.params.productId;
let selectedProduct = Object.values(factionsDb).find(product => Object.values(product).includes(requestedProductId));
res.render('pages/product-details', {
parentPage: "'../factions'",
pageTitle: selectedProduct.name,
section: "factions",
product: selectedProduct
});
})
app.listen(3000, function(){
console.log("Server started on port 3000");
});
// -------------------------------------------------------------------------- //
app.use(function (req, res) {
res.status(404).render('pages/404', {parentPage: "'/'", pageTitle: ""},
);
});
【问题讨论】: