nodejs实战案例(Express框架+mongoDB)——(10)——提问页面,回答问题

首先完成路由index.js的设置,将

app.get('/question/:id',function(req,res){
    });

修改为:

app.get('/question/:id',function(req,res){
          User.findQuestion(req.params.id, function(err, items){
               res.render('question',{
                   items:items[0],
                   user:req.session.user,
                   id:req.params.id,
              });
          });
     });


在user.js中添加

在user.js中添加

User.findQuestion=function(id,callback){
  //打开数据库
  mongodb.open(function(err, db){
    if(err){
      return callback(err);
    }
    db.collection('question', function(err, collection){
      if(err){
        mongodb.close();
        return callback(err);
      }
      collection.find({_id:Number(id)}).toArray(function(err,items){
        if(err) throw err;
        mongodb.close();
        return callback(err,items);
      });
    });
  });
}; 


在views中增加question.ejs文件,内容如下:

<%- include header %>

<div class="container">

  <div class="row-fluid">

    <div class="span7">

      <div>

        <h1><%= items.title %></h1>

        <p><%= items.askText %></p>

      </div>

      <ul>

        <% items.answer.forEach(function(q, index){ %>

        <li>

          <h4><%= q.user.name %></h4>

          <p><%= q.answer %></p>

        </li>

        <% })%>

      </ul>

      <form action="answer" method="post">

        <input name="questionId" value="<%= id %>" style="display:none">

        <textarea name="answer"></textarea>

        <input type="submit" value="Submit" />

      </form>

    </div>

    <div class="span4">

      <h2>我的信息</h2>

      <h2>我的信息</h2>

      <h2>我的信息</h2>

      <h2>我的信息</h2>

      <h2>我的信息</h2>

    </div>

  </div>

</div>

<%- include footer %>


成功后测试下,页面如下:

nodejs实战案例(Express框架+mongoDB)——(10)——提问页面,回答问题


下面是实现回答问题功能:

还是修改路由设置,将index.js中

app.post('/answer',function(req,res){

     });

修改为

app.post('/answer',function(req,res){
          var answer={};
          answer.answer=req.body.answer;
          answer.user=req.session.user;
          questionId=req.body.questionId;
          User.answer(questionId,answer,function(info){
               res.redirect('/question/'+questionId);
          })
     }); 


需要在user.js中添加

User.answer=function(questionId,answer,callback){
  //打开数据库
  mongodb.open(function(err, db){
    if(err){
      return callback(err);
    }
    db.collection('question', function(err, collection){
      if(err){
        mongodb.close();
        return callback(err);
      }
      //这里可以暂停一下进度,阅读下mongodb的一些操作方法,本文的最下面有一个还不错的pdf讲解mongodb的增删改查的
      collection.update({_id:Number(questionId)},{$push:{answer:answer}},function(err,items){
        if(err) throw err;
        mongodb.close();
        return callback(items);
      });
    });
  });
};

成功后会有下面显示 

nodejs实战案例(Express框架+mongoDB)——(10)——提问页面,回答问题


好了,回答功能完成了。


下面是一个我觉得不错的mongodb学习手册

http://pan.baidu.com/share/link?shareid=171618426&uk=52813371


转载于:https://my.oschina.net/u/200898/blog/188975