您的位置:首页 > Web前端 > Node.js

Nodejs之MEAN栈开发(九)---- 用户评论的增加/删除/修改

2016-08-05 09:04 573 查看
由于工作中做实时通信的项目,需要用到Nodejs做通讯转接功能,刚开始接触,很多都不懂,于是我和同事就准备去学习nodejs,结合nodejs之MEAN栈实战书籍《Getting.MEAN.with.Mongo.Express.Angular.and.Node.2015.11》,我们完成了一个小型的ReadClubing项目,结合书中讲解和步骤,我们完成了不同的功能,当然由于时间原因,还有很多不完善的地方,后续我们会继续开发。

同事负责开发的内容为:

Nodejs之MEAN栈开发(一)----路由与控制器

Nodejs之MEAN栈开发(二)----视图与模型

Nodejs之MEAN栈开发(三)----使用Mongoose创建模型及API

Nodejs之MEAN栈开发(四)----form验证及图片上传

Nodejs之MEAN栈开发(五)----Angular入门与页面改造

Nodejs之MEAN栈开发(六)----用Angular创建单页应用(上)

Nodejs之MEAN栈开发(七)----用Angular创建单页应用(下)

Nodejs之MEAN栈开发(八)----用户认证与会话管理详解

我开发的内容为:

Nodejs之MEAN栈开发(九)----用户评论的增加/删除/修改

针对这次Nodejs之MEAN栈开发ReadClubing项目,我主要负责是标题详情页面,包括页面布局、数据展示、评论的增加/删除/修改等工作。

1、标题详情页面布局和数据展示

标题详情页操作如图:

module.exports.commentUpdateOne=function(req,res){
if(!req.params.topicid||!req.params.commentid){
sendJSONresponse(res,404,{
"message":"Notfound,topicidandcommentidarebothrequired"
});
return;
}
TopicModel
.findById(req.params.topicid)
.select('comments')
.exec(
function(err,topic){
if(!topic){
sendJSONresponse(res,404,{
"message":"topicidnotfound"
});
return;
}elseif(err){
sendJSONresponse(res,400,err);
return;
}
if(topic.comments&&topic.comments.length>0){
if(!topic.comments.id(req.params.commentid)){
sendJSONresponse(res,404,{
"message":"commentidnotfound"
});
}else{

for(vari=0;i<topic.comments.length;i++){
if(topic.comments[i]._id==req.params.commentid){
topic.comments[i].content=req.body.editContent;
topic.save(function(err,topic){
if(err){
sendJSONresponse(res,404,err);
}else{
sendJSONresponse(res,200,topic);
}
});
}
}

}
}else{
sendJSONresponse(res,404,{
"message":"Nocommenttoupdate"
});
}
}
);
};

varupdateContentById=function(req,res,commentid){
CommentModel
.findById(commentid)
.select('content')
.exec(
function(err,content){
if(!content){
sendJSONresponse(res,404,{
"message":"contentnotfound"
});
return;
}elseif(err){
sendJSONresponse(res,400,err);
return;
}
sendJSONresponse(res,200,content);
topic.save(function(err,comments){
if(err){
sendJSONresponse(res,404,err);
}else{
sendJSONresponse(res,200,book);
}
});
}
);
}


ViewCode
最后,通过控制器中执行成功后的回调函数,通过循环找到要修改的那个评论id,根据那条id去更新对应的评论内容,实现页面数据更新。

细节:如果在node页面console.log("汉字")或者后端接收到带有中文的数据或者使用node提供的代码压缩uglifyJs.minify(),cmd窗口会报错,原因是windows系统自带的cmd窗口不能识别utf-8字符编码,解决方法如下:

1、打开CMD.exe命令行窗口;

2、通过chcp命令改变代码页,UTF-8的代码页为65001;



3、修改窗口属性,改变字体

在命令行标题栏上点击右键,选择"属性"->"字体",将字体修改为TrueType字体"LucidaConsole",然后点击确定将属性应用到当前窗口。如下图所示:



这时使用type命令就可以显示UTF-8文本文件的内容了:

typefilename.txt


4、通过以上操作并不能完全解决问题,因为显示出来的内容有可能不完全。可以先最小化,然后最大化命令行窗口,文件的内容就完整的显示出来了。

5、另外提供一些chcp命令的参考:

chcp65001就是换成UTF-8代码页

chcp936可以换回默认的GBK

chcp437是美国英语

源码:https://github.com/stoneniqiu/ReadingClub(注意不同分支)

小结:这一节主要讲到了如何在Angular页面来加载Jquery组件如富文本框summernote,调取数据和展示数据时应该注意的几点细节,评论的增加、删除、修改,其实内容不是很多,主要要理清思路,根据项目mvc的逻辑结构,自己走一遍,应该就没问题了。


                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐