【发布时间】:2020-02-21 19:42:18
【问题描述】:
我的应用程序的想法是在 mongodb 数据库中添加数据,并将数据作为列表从数据库获取到前端。
这是我的 index.js 文件:
const express = require('express');
const ejs = require('ejs')
const app = express();
const bodyParser = require('body-parser')
const MongoClient = require('mongodb').MongoClient;
app.set('view engine', 'ejs');
app.get('/', (req, res) => {
res.render(`home.ejs`)
});
app.get('/form', (req, res) => {
res.render(`form.ejs`)
});
///////////////////////////////////////////////
let jsonParser = bodyParser.json()
let urlencodedParser = bodyParser.urlencoded({extended: false})
const url = "mongodb://localhost:27017/test";
app.post('/', urlencodedParser, function (req, res) {
MongoClient.connect(url, function (err, db) {
if (err) throw err;
let dbo = db.db("test");
const userName = req.body.firstName;
const userLastName = req.body.lastName;
console.log(userName);
console.log(userLastName);
res.render(`home.ejs`, {userName, userLastName});
let myobj = {firstName: userName, lastName: userLastName};
dbo.collection("users").insertOne(myobj, function (err, res) {
if (err) throw err;
else {
dbo.collection('users').find().toArray(function(err, result) {
if (err) throw err;
const a = result.map(i => i.firstName);
console.log(a);
app.get('/blog', (req, res) => {
res.render(`blog.ejs`, {a}) // here i send data to my blog file
});
db.close();
});
}
console.log("1 document inserted");
db.close();
});
});
});
app.listen(9000, function () {
console.log('node starts')
});
我要发送数据的文件是blog.ejs。如果我运行命令 node index.js 我将从 mongodb 获取数据,但是如果之后我将在我的 form 文件中添加一些新内容,即使数据将在数据库中发送,在前端它也不会更新,这是主要问题。
这是我的form.ejs 文件:
<form action="/" method="post">
<input type="text" name="firstName">
<input type="text" name="lastName">
<button type="submit">SUBMIT DATA</button>
</form>
<a href="/">Back to Home</a>
这是我的blog.ejs 文件:
<div>
<h1>Blog</h1>
<%=a %>
<a href="/form">Back to Form</a>
</div>
我的问题是:
1、我通过form.ejs发送东西后前端数据更新问题如何解决?
【问题讨论】: