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. hdu 2899 Strange fuction——模拟退火

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=2899 还可三分.不过只写了模拟退火. #include<iostream> #include& ...

  2. 用PowerShell在China Azure创建ARM虚拟机

    Azure目前有两种工作模式:ASM和ARM. 在国内的Azure,我们都是使用ASM的模式.但这种模式有很多限制,比如每个VM必须有一个公网地址,部署不能批量部署等等.ARM对Azure的整体架构做 ...

  3. HDOJ1010 (DFS+奇偶剪枝)

    Tempter of the Bone Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Othe ...

  4. windows黑科技-记录dns log

    昨天看到袁哥微博,看到了这篇,今天测试了一下,记录下来: The DNS Client service does not log by default. However, if a file name ...

  5. 2016.1.19 DEV Express控件GirdControl使用

    103.GridControl中添加Button RunDesigner,添加一列,设置对应字段FiledName,ColumnEdit选择ButtonEdit,此时默认风格像下拉框,需调整属性: 在 ...

  6. leetcode628

    这道题十分不容易啊,做到半夜. class Solution { public: static int cmp628(int a, int b) { return a > b; } static ...

  7. WebRTC的拥塞控制技术<转>

    转载地址:http://www.jianshu.com/p/9061b6d0a901 1. 概述 对于共享网络资源的各类应用来说,拥塞控制技术的使用有利于提高带宽利用率,同时也使得终端用户在使用网络时 ...

  8. 使用Ping命令解析主机名解析出来的是IPv6

    如果你经常使用ping命令,并身处局域网,那么你肯定会有这样一个疑问:Ping计算机名为何是IPv6地址? 问这个问题的人很少见,大多都是对网络知识稍有了解的人,所以才会闻到关于ping的问题,而且在 ...

  9. Android常用开源库集合【持续更新】

    1.FastJson  阿里巴巴工程师做的一个方便的JSON转换库 2.ButterKnife 只要作用能代替代码中大量的findviewbyid语句的使用,使用@injectview注入方式 3.v ...

  10. Ros问题汇总

    1.ImportError: No module named beginner_tutorials.srv 解决: cd ~/catkin_ws $ source devel/setup.bash $ ...