nodejs的操作

由于版本造成的命令不能正常安装,请参考五问题

一.概念:

参考百度百科:

http://baike.baidu.com/link?url=aUrGlI8Sf20M_YGk8mh--dM83NhajEdefGvqZkpcwh95CKSqQ8_9C_10dyB-zIapRcF66MWnYljhs4rEiT_EkyPVJ9BFNeq826Gf0GQT9ksBf0I0H0QhcpzDXiGzFHo4T6ifwY08J6V4iQu2Z0QzRq

二.下载:

访问nodejs官网 www.nodejs.org/download/   下载与机器相匹配的版本

三.安装:

参考百度经验:

http://jingyan.baidu.com/article/b0b63dbfca599a4a483070a5.html

四.exepress的安装:

1.安装exepress框架:

Quick Start

(1)npm install -g express//安装全局的express。

(2)express -t ejs webNodejs//使用ejs模板引擎创建项目,项目名为webNodejs,webNodejs也可以是路径。

(3)cd webNodejs && npm install//进入项目路径下并且安装。

(4) cd webNodejs//进入项目路径

(5) nmp start//启动服务,如果app.js是入口,就可以直接启动app.js,反之,使用nmp start[我部署的就在bin/www此文件。(注意)]

完成后如下图:

2.参考github官网:

https://github.com/strongloop/express

3.参考expressjs官网:

http://www.expressjs.com.cn/4x/api.html

四.Demo:

参考百度云盘:

五.问题:

问题一:
安装 ejs 模板的语法有问题,安装不成功,如下:
express -t ejs microblog
 
需要改成:
express microblog -e
 
问题二:
partial 方法已经不能用了,可以用include代替,如下:
<ul><%- partial('listitem', items) %></ul>
 
需要改成:
<% items.forEach(function(listitem){ %>
<% include listitem %>
<% }) %>
 
问题三:
helpers 和 dynamicHelpers 方法已经不能用了,如下:
app.helpers({
     inspect: function(obj) {
          return util.inspect(obj, true);
     }
});
app.dynamicHelpers({
     headers: function(req, res) {
          return req.headers;
     }
});
app.get('/helper', function(req, res) {
     res.render('helper', {
          title: 'Helpers'
     });
});
 
需要改成:
var util = require('util');
app.locals({
     inspect: function(obj){
          return util.inspect(obj, true);
     }
});
app.use(function(req, res, next){
     res.locals.headers = req.headers;
     next();
});
app.get('/helper', function(req, res){
     res.render('helper',{
          title: 'Helpers'
     });
});
 
还需要注意的是,上面这段代码需要放在 app.use(app.router); 前面。
 
问题四:
express3.*已经不支持layout方法了,所以要改成include才能正常显示首页。
在 views 文件夹下新建,header.ejs 和 footer.ejs。
layout.ejs 中的内容,以 <%- body %> 为界限,上面的内容写入header.ejs ,下面的内容写入footer.ejs
然后在 index.js 中加入 <% include header.ejs %> 和 <% include footer.ejs %>,把表单内容,写在中间即可
 
问题五:
配置mongodb时,很多报错:
app.js中的 var settings = require('../settings'); 应改成 var settings = require('./settings');
app.js中的 app.use(express.bodyParser()); 应该去掉
app.js中的 var MongoStore = require('connect-mongo'); 应改成 var MongoStore = require('connect-mongo')(express);
 
问题六:
出现 has no method 'router' 问题,解决办法如下:
保留原来的 app.use(app.router); 不要按作者的说法改成 app.use(express.router(routes));
并且在 app.js 最末尾加上 routes(app);
而且还要删除掉 app.js 中的
app.get('/', routes.index);
app.get('/u/:user', routes.user);
app.post('/post', routes.post);
app.get('/reg', routes.reg);
app.post('/reg', routes.doReg);
app.get('login', routes.login);
app.post('login', routes.doLogin);
app.get('/logout', routes.logout);
 
问题七:
req.flash 方法不能用,解决办法如下:
运行>npm install connect-flash 安装组件
并在app.js中加入:
var flash = require('connect-flash');
app.use(flash());
 
问题八:
Error: Cannot use a writeConcern without a provided callback
    at Db.ensureIndex (D:\Work\code\nodejs\microblog\node_modules\mongodb\lib\mongodb\db.js:1395:11)
解决办法如下:
\models\user.js 中的 collection.ensureIndex('name', {unique: true}); 改成collection.ensureIndex('name', {unique: true}, function(err, user){});
\models\post.js 中的 collection.ensureIndex('user'); 改成collection.ensureIndex('user' ,function(err, post){});

nodejs nodejs的操作的更多相关文章

  1. Nodejs通过Thrift操作hbase卡住原因分析及与javascript的垃圾回收机制的关系

    在最近使用Nodejs通过Thrift操作hbase的时候写了个脚本,不断发送http请求,从而取得hbase下所需的数据,但是在run的过程中for循环并没有执行完全,在执行一部分后会卡住,就再也进 ...

  2. nodejs 使用mongoose 操作mongodb

    nodejs操作mongodb可以使用mongoose: Mongoose is a MongoDB object modeling tool designed to work in an async ...

  3. nodeJs的Buffer操作

    再nodejs里,很多类是引入模块才能使用,Buffer是一个全局类,他不需要require引入 Buffer有三种构造函数 //1.在构造函数传一个数字,规定buffer的长度.默认全是16进制的0 ...

  4. nodejs 循环中操作需要同步执行解决方案

    最近用nodejs做了个针对某网站的小爬虫.干坏事得低调对吧,不能同时开太多的网络访问,结果各种回调/循环虐的心力交瘁. 经过了n次的百度\哥哥后终于拼出了自己要的功能.不敢独享分享出来以供大家参考. ...

  5. nodeJS 中mongoose操作分页

    开始前先聊聊五毛钱的: 好久没写了,可能是因为懒(哎),写这个是好事,既帮助了自己,巩固一下知识,也可以让别人给自己纠错纠错,三月份接触到了node,先是跟着一些教程写了一些小实例,感觉自己就喜欢上了 ...

  6. nodejs之mongodb操作

    声明: 当查询到数据库数据后,对数据库数据进行遍历,可以采用toArray()函数,具体实现可以看第六点 1.本地安装mongodb 安装包:https://www.mongodb.com/downl ...

  7. Nodejs使用robot操作鼠标键盘

    1.安装robotjs库 前提是配置了cnpm cnpm i robotjs -g   2.如果报错VCBuild.exe,如下可以安装windows-tool MSBUILD : error MSB ...

  8. nodejs使用sequelize操作mysql实例

    sequelize是node操作mysql的一款npm包,包含很多特性:数据库模型映射.事务处理.模型属性校验.关联映射等,花了两天时间学习了下基本的一些操作,特别是关联映射部分的操作,包含1:1.1 ...

  9. Nodejs文件相关操作

    欢迎关注我的博客我在马路边 适用人群 本文适用于刚接触Node的小白,毕竟我也是小白,大佬请绕行. Node文件操作 在实际开发中遇到很多有关文件及文件夹的操作,比如创建.删除文件及文件夹,文件拷贝. ...

随机推荐

  1. bzoj 5092 [Lydsy1711月赛]分割序列——高维前缀和

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=5092 套路地弄一个前缀异或和,就变成 f[ i ]=max_{j=0}^{i} { s[ j ...

  2. python3小例子:scrapy+mysql

    https://blog.csdn.net/u010151698/article/details/79371234

  3. n年的一次聚会

    今日聚会有a,b,b1,c,d 五人一起吃饭. 先谈谈各自的变化吧. a 毕业之后,他爸给他买了一个京a的牌照,然后出印度留学,然后回到北京,现在算一个中层领导,不过比较忙,刚刚聚餐完毕就立马回去加班 ...

  4. Hot resize Multipath Disk – Linux

    This post is for the users of the great dm-multipath system in Linux, who encounter a major availabi ...

  5. Jenkins构建触发器定时Poll SCM、Build periodically

    一.时间设置语法 时间设置由5位组成:* * * * * 第一位:表示分钟,取值0-59. 第二位:表示小时,取值0-23. 第三位:表示日期,取值1-31. 第四位:表示月份,取值1-12. 第五位 ...

  6. UTF-8, Unicode, GB2312格式串转换之C语言版

    原住址:http://www.cnitblog.com/wujian-IT/archive/2007/12/13/37671.html           /*      author:   wu.j ...

  7. select *和select 全部

    select *和select 全部字段 在查询上效果是一样的,速度也是一样的. 不过理论上来说select *反而会快点. 因为 1.select 全部字段在数据传输上消耗会更多,如果几百个字段这个 ...

  8. Ueditor/自定义配置

    UEditor除 了具有轻量.可定制等优点外,还始终将优化编辑操作.提升用户体验摆在了很重要的位置.在这一点上,除了对编辑器功能.性能.实现细节等不断地改进和追求 创新之外,众多灵活而人性化的自定义配 ...

  9. 开发环境入门 linux基础 (部分) 归档 压缩 Vi编译器 系统分区

    归档 压缩 Vi编译器 系统分区 1.使用cat命令进行文件的纵向合并          1) 使用cat命令实现文件的纵向合并:          a) 例如:将用户信息数据库文件和组信息数据库文件 ...

  10. Python代码规范总结

    1.缩进问题: Tip:用4个空格来缩进代码 不要用Tab键或者是Tab和空格混用, vim用户可以将tab键设置为4个空格的长度.要么选择垂直对齐换行的元素, 或者是使用4空格悬挂式缩进(第一行没有 ...