简单的待办事项应用程序,只是不打印待办事项

问题描述 投票:0回答:1

我正在使用节点js,express,mongodb和ejs构建一个简单的待办应用程序。

[我的get Route呈现表单,而投递路线则处理表单上的投递请求,它们都可以正常工作,只要我插入一个(待办事项)就可以保存并可以在我的mongo指南针中找到。

但它不会像Todo App那样显示在屏幕上。它只打印出(ul)的常规子弹我不知道自己在做什么错,这是我的代码请帮帮我...

const express = require('express');
const app = express();
const port = 8080;
const bodyParser = require('body-parser');
const multer = require('multer');
const upload = multer();
const session = require('express-session');
const cookieParser = require('cookie-parser');
const mongoose = require('mongoose');
mongoose.connect("mongodb://localhost/Todo-App", 
{useUnifiedTopology:true,useNewUrlParser:true,useFindAndModify:false,useCreateIndex:true});
app.set('view engine','ejs');

app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
app.use(upload.array());
app.use(cookieParser());
app.use(session({secret:"secret"}));

var todoschema = mongoose.Schema({
item:String,
});

var Todo = mongoose.model("Todo",todoschema);

app.get('/',(req,res)=>{
res.render('home.ejs',{Todo:Todo});
});

app.post('/',(req,res)=>{
var newTodo = new Todo({
    item:req.body.item,
});
newTodo.save((err,result)=>{
    if(err){
        throw err;
    }
    else{
        res.redirect('/');
    }
})
})

app.listen(8080,()=>{
console.log("App is running...")
})

这是我在ejs文件中的代码

<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
    <meta charset="utf-8">
    <title></title>
</head>
<body>
    <h1>My To-Do Application</h1>
    <form action="/" method="post">
        <input type="text" name="item" placeholder="Enter Item">
        <input type="submit" value="Add To List">
    </form>
    <%for(var i = 0; i < Todo.length; i++){%>
        <li> <%=Todo[i]%></li>
    <%}%>
</body>
</html>
node.js mongodb express ejs
1个回答
0
投票

我认为问题在这里

app.get('/', (req, res) => {
    res.render('home.ejs', { Todo : Todo });
});

您正在执行res.render却没有从db中找到文档

我认为我们需要在执行res.render之前添加查找查询>

应该是这样的

app.get('/', (req, res) => {
    Todo.find({}, (err, todos) => { // passing an empty object as a first argument to the find method means we need to get all the documents from Todo collection
        if (err) {
            throw err;

        } else {

            res.render('home.ejs', { Todo: todos });
        }
    });
});

希望有帮助

© www.soinside.com 2019 - 2024. All rights reserved.