我正在使用node js作为后端语言。我正在通过使用表单提交数据在mongodb中创建数据,但我想查找最新输入的数据并将其显示在我的ejs模板中。
这是我的代码:
/*mongoose schema setup*/
const codeSchema = new mongoose.Schema({
first: String,
second: String,
third: String,
event: String,
link: String
});
const Code = mongoose.model('Code', codeSchema);
/* GET home page. */
router.get('/welcome', async function(req, res, next) {
await Code.find({}).sort({_id: -1}).exec(function(err, data) {
if(err)
{
console.log(err);
}
else
{
//console.log(data);
res.render('index', {data: data});
}
});
});
/* GET new form form page. */
router.get('/update', function(req, res, next) {
res.render('newform');
});
/* POST update welcome page. */
router.post('/welcome', async function(req, res, next) {
const info = {
first: req.body.first,
second: req.body.second,
third: req.body.third,
event: req.body.event,
link: req.body.link
};
await Code.create(info, function(err){
if(err) {
console.log(err);
}
else {
res.redirect('/welcome');
}
});
});
代码工作正常,它从数据库中创建并提取最后n条记录,但是当我尝试在html中显示数据时却没有显示出来。我还尝试使用findOne()方法来实际工作并显示我数据库中的最后n条记录。当我的数据库没有数据,而findOne()无法工作并在我的ejs模板中产生错误时,就会出现问题。
我使用find({})方法从数据库中找到数据。就像我在ejs模板中做名字-<%= data.first%>一样,我的数据也不会显示。 我还检查了我的mongo数据库,该数据库具有通过表单传递的所有信息。 请帮助!!!!!
P.S。 -我可以使用for循环显示db中的所有数据,但我只想显示特定的数据。
答案 0 :(得分:0)
Nithin K Joy这是我的index.ejs
<h1>Index Page</h1>
<h4> Person1- <%= data.first %> <h4/>
<h4> Person2- <%= data.second %> <h4/>
<h4> Person3- <%= data.third %> <h4/>
<h4> Event name- <%= data.event %> <h4/>
<h4> Registration Link- <%= data.link %> <h4/>
这是我提交陈述的表格
<form action="/welcome" method="POST" style="width: 30%; margin: 40px auto;">
<input type="text" id="winner1" name="first" placeholder="1st">
<input type="text" id="winner2" name="second" placeholder="2nd" >
<input type="text" id="winner3" name="third" placeholder="3rd" >
<input type="text" id="event" name="event" placeholder="Event Name" >
<input type="text" id="link" name="link" placeholder="Event Regestration link" >
<button type="submit class="btn btn-success btn-block">Submit</button>
如果我将index.ejs代码放在一个循环中可以正常工作,但是我不希望FORM的多个输入出现在index.ejs中,我只希望最后n条记录