使用Node JS在Mongodb中创建数据

时间:2020-07-16 07:53:43

标签: javascript node.js mongodb mongoose

我正在使用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中的所有数据,但我只想显示特定的数据。

1 个答案:

答案 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条记录