首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >无法渲染到ejs文件

无法渲染到ejs文件
EN

Stack Overflow用户
提问于 2018-06-03 03:50:55
回答 2查看 417关注 0票数 0

我正在学习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;

我哪里弄错了?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-06-03 03:56:42

如果没有定义dataTest,您可能应该定义它:

res.render('test', {dataTest: [], msg: 'File Uploaded!'});
票数 1
EN

Stack Overflow用户

发布于 2018-06-03 04:03:29

我猜这是

var dataTest = require('../data/dataTest.json'); 

返回undefined,这又会使dataTest在此处未定义

res.render('test', {dataTest: dataTest}));

所以我建议你检查dataTest是否包含有效的内容。只需简单地做

console.log(dataTest);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50660610

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档