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 %>

 

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

还是修改路由设置,将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);
});
});
});
};

 

好了,回答功能完成了。

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

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

未经允许不得转载:前端撸码笔记 » nodejs实战案例(Express框架+mongoDB)之10:提问页面,回答问题

上一篇:

下一篇: