我正在学习node.js,现在我正在尝试向/从JSON写入和读取数据。我能够找到如何将数据从表单写入JSON文件以及如何在前端获取它们。但是现在我在从表单发布新数据时遇到问题,站点应该回显到test.ejs并显示消息“File uploaded”。而不是我得到错误“dataTest未定义。
这是我在views文件夹中的test.ejs代码
<div class="container">
<%= typeof msg != 'undefined' ? msg : '' %>
<form action="test/send" method="post" role="form">
Name:<input type="text" name="name" /><br>
Lastname:<input type="text" name="lastname" /><br>
Adress:<input type=="text" name="adress" /><br>
<input type="submit" value="Submit" >
</form>
<div class="users">
<% dataTest.forEach(function(dat) { %>
<p>
<%= dat.name %>
<%= dat.lastname %>
<%= dat.adress %>
</p>
<% }); %>
</div>
和我的test.js路由文件夹中的代码
var express = require('express');
var fs = require('fs');
var bodyParser = require('body-parser');
var router = express.Router();
router.use(bodyParser.json());
router.use(bodyParser.urlencoded({ extended: false }));
var dataTest = require('../data/dataTest.json');
// GET test page.
router.get('/', (req,res) => res.render('test', {dataTest: dataTest}));
// POST data to dataTest.json
router.post('/send', (req,res) => {
var file = './data/dataTest.json';
var name = req.body.name;
var lastname = req.body.lastname;
var adress = req.body.adress;
var obj = { name: name,lastname: lastname,adress: adress };
// 1. Read the existing file
fs.readFile(file, (err, data) => {
if (err && err.code === "ENOENT") {
return fs.writeFile(file, JSON.stringify([obj]), error => console.error);
}
else if (err) {
console.error(err);
}
else {
try {
const fileData = JSON.parse(data);
fileData.push(obj);
return fs.writeFile(file, JSON.stringify(fileData), error => console.error)
} catch(exception) {
console.error(exception);
}
}
});
res.render('test', {msg: 'File Uploaded!'});
})
module.exports = router;
我在哪里弄错了?
答案 0 :(得分:1)
如果未定义dataTest
,您应该定义它:
res.render('test', {dataTest: [], msg: 'File Uploaded!'});
答案 1 :(得分:0)
var dataTest = require('../data/dataTest.json');
返回undefined,返回使dataTest
未定义
res.render('test', {dataTest: dataTest}));
所以我建议您检查dataTest
是否包含有效内容。只是做
console.log(dataTest);