【问题标题】:Embedded JS (ejs) isn't rendering data to browser嵌入式 JS (ejs) 不会向浏览器呈现数据
【发布时间】:2018-03-19 04:44:49
【问题描述】:

我正在使用 express, node, pg-promise, and ejs. 开发一个简单的待办事项应用程序,我创建了一个数据库,但无法让内容显示在浏览器中。

奇怪的是,当我检查浏览器时,它会识别每个任务的形状,但除了<p> 标签外,它们都是空的。 <h1> 标签和内容出现了,所以我认为这是比目鱼/鱿鱼的问题,但我不太确定。

json 数据出现了,但是在切换到 response.render 并链接 index.ejs 文件后,我没有任何运气。

以下是文件结构的基本概述:

1. models
   - task.js
2. views
   - edit.ejs
   - index.ejs
   - new.ejs
   - show.ejs
3. server.ejs, package.json, form.html

数据库名称:todo_app

表名:任务

id | subject  |             content
----+----------+---------------------------------
  1 | planning | plot world domination
  2 | garden   | find victims for venus fly trap
  3 | food     | buy pickles
  4 | postman  | test post

注意:我用 Postman 添加了 4 号。


index.ejs

<body>
  <h1>Here's the task list:</h1>
  <% tasks.forEach((everyTask) => {%>
    <p>
      <%= tasks.content %>
    </p>
    <%})%>
</body>

</html>

server.js

const express = require('express');
const app = express();
const PORT = 3000;
const bodyParser = require('body-parser');
// const models = require('./models/task')

app.use(bodyParser.json())

const urlencodedParser = bodyParser.urlencoded({ extended: false })

app.set("view engine", "ejs");

const findAllTasks = require('./models/task').findAllTasks;
const findById = require('./models/task').findById;
const createTask = require('./models/task').createTask;
// const edit = require('./models/task').edit;
// const delete = require('./models/task').delete;


app.get('/', (request, response) => {
  findAllTasks().then(everyTask => {
    response.render('index', { tasks: everyTask });
  });
});


app.listen(PORT, () => {
  console.log(`Welcome to the Year ${PORT}, the world of tomorrow!`)
});

task.js

const pgp = require('pg-promise')({});

const connectionURL = "postgres://localhost:5432/todo_app";

const db = pgp(connectionURL);

const findAllTasks = () => {
  return db.any('SELECT * FROM tasks');
}

const findById = id => {
  return db.one('SELECT * FROM tasks WHERE id = $1', [id]);
};

const createTask = data => {
  return db.one('INSERT INTO tasks(subject, content) VALUES($[subject], $[content]) RETURNING id', data)
}

module.exports = {
  findAllTasks: findAllTasks,
  findById: findById,
  createTask: createTask
  // edit: edit,
  // delete: delete
};

【问题讨论】:

    标签: javascript node.js express pg-promise embedded-javascript


    【解决方案1】:

    我认为task.ejs 是指:index.ejs。你的 forEach 应该是这样的:

    <body>
      <h1>Here's the task list:</h1>
      <% tasks.forEach((everyTask) => {%>
        <p>
          <%= everyTask.content %>
        </p>
        <%})%>
    </body>
    

    【讨论】:

    • 你是对的,它是 index.ejs。此外,everyTask 工作!我很确定 forEach 应该引用 server.js 文件中的 findAllTask​​s,所以我关注的是 findAllTask​​s。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-20
    相关资源
    最近更新 更多