我正在学习node.js,现在我正在尝试向JSON写入数据和从JSON读取数据。我能够了解如何将数据从表单写入JSON文件,以及如何将它们放在前端。但是现在我有一个问题,当我从表单发布新数据时,站点应该呈现回test.ejs并显示消息“文件已上传”。而不是我得到错误"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>
和我在routes文件夹中的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;
我哪里弄错了?
https://stackoverflow.com/questions/50660610
复制相似问题