我正在学习 Node.js,现在我正在尝试向 JSON 写入数据或从 JSON 读取数据。我能够找到如何将数据从表单写入 JSON 文件以及如何在前端获取它们。但现在当我从表单发布新数据时遇到问题,网站应该渲染回 test.ejs 并显示消息“文件已上传”。相反,我收到错误“dataTest 未定义。
这是 View 文件夹中的 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;
我哪里出错了?
最佳答案
如果 dataTest
未定义,您可能应该定义它:
res.render('test', {dataTest: [], msg: 'File Uploaded!'});
关于javascript - 无法渲染到 ejs 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50660610/