了不起的node.js读书笔记之mongodb数据库交互


Posted in Javascript onDecember 22, 2014

 这周的学习主要是nodejs的数据库交互上,并使用jade模板一起做了一个用户验证的网站。主要是遇到了一下几个问题。

1.mongodb版本过低

  npm ERR! Not compatible with your operating system or architecture: mongodb@0.9.9

  0.9.9只支持linux,darwin,freebsd这几个系统,最新版本已支持wins。

2.nodejs进行insert操作后:无法读取结果

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

      //插入文档

      app.users.insert(req.body.user, function(err, doc){

           if(err) return next(err);

           res.redirect('/login/' + doc[0].email);

      });

 });

  表象是重定向失败,真实情况是插入数据库已经成功但doc为空,更不要说doc[0].email的值了。原因是insert这类操作是异步进行的,异步操作默认是不返回其结果的来确定是否运行成功的。需要通过增加第三个参数{safe:ture}来实现这个功能,即app.users.insert(req.body.user, {safe:ture}, function(){……})。这样就成功读取结果了。

3.connect-connect出现未定义store

 MongoStore = require('connect-mongo')

 

 app.use(express.session({

     secret:settings.cookieSecret,

     store:new MongoStore({

         db:settings.db

     })

 }));

源码如上,查明原因为基于Express的不同版本,connect-mongo模块引入的方式不同。在其Readme.md也特别提示了。

 With express4:

     var session    = require('express-session');

     var MongoStore = require('connect-mongo')(session);

     app.use(session({

         secret: settings.cookie_secret,

         store: new MongoStore({

           db : settings.db,

         })

       }));

 With express<4:

     var express = require('express');

     var MongoStore = require('connect-mongo')(express);

     app.use(express.session({

         secret: settings.cookie_secret,

         store: new MongoStore({

           db: settings.db

         })

       }));

针对不同的版本,相应的修改即可。

4.总结

  经过这本书的学习,知道nodejs的一些特点以及活跃外文站。node中一些热门板块的更新频率也加大了学习的难度,这本书也算入门吧。接下来计划通过实战学习sails后端框架。学习中遇到的问题也都记录在笔记本上。

Javascript 相关文章推荐
JS中的public和private对象,即static修饰符
Jan 18 Javascript
JavaScript 创建运动框架的实现代码
May 08 Javascript
javascript生成json数据简单示例分享
Feb 14 Javascript
jquery实现的V字形显示效果代码
Oct 27 Javascript
一个仿微博登陆邮箱提示框js开发案例
Jul 28 Javascript
Google 地图API Map()构造器详解
Aug 06 Javascript
js实现3d悬浮效果
Feb 16 Javascript
详解angular用$sce服务来过滤HTML标签
Apr 11 Javascript
Vue 过滤器filters及基本用法
Dec 26 Javascript
vue使用iframe嵌入网页的示例代码
Jun 09 Javascript
原生js实现五子棋游戏
May 28 Javascript
vue 判断元素内容是否超过宽度的方式
Jul 29 Javascript
javascript动态创建及删除元素的方法
Dec 22 #Javascript
了不起的node.js读书笔记之例程分析
Dec 22 #Javascript
了不起的node.js读书笔记之node的学习总结
Dec 22 #Javascript
了不起的node.js读书笔记之node.js中的特性
Dec 22 #Javascript
jQuery+ajax中getJSON() 用法实例
Dec 22 #Javascript
IE8中动态创建script标签onload无效的解决方法
Dec 22 #Javascript
javascript的日期对象、数组对象、二维数组使用说明
Dec 22 #Javascript
You might like
DC《小丑》11项提名领跑奥斯卡 Netflix成第92届奥斯卡提名最大赢家
2020/04/09 欧美动漫
自制短波长线天线频率预选器 - 成功消除B2K之流的镜像
2021/03/02 无线电
深入PHP magic quotes的详解
2013/06/17 PHP
PHP取二进制文件头快速判断文件类型的实现代码
2013/08/05 PHP
PHP网站自动化配置的实现方法(必看)
2017/05/27 PHP
PHP使用正则表达式实现过滤非法字符串功能示例
2018/06/04 PHP
Javascript 表单之间的数据传递代码
2008/12/04 Javascript
『jQuery』取指定url格式及分割函数应用
2013/04/22 Javascript
IE6-IE9中tbody的innerHTML不能赋值的解决方法
2014/09/26 Javascript
使用console进行性能测试
2015/04/27 Javascript
jquery拖拽效果完整实例(附demo源码下载)
2016/01/14 Javascript
表单中单选框添加选项和移除选项
2016/07/04 Javascript
jQuery插件FusionCharts实现的3D帕累托图效果示例【附demo源码】
2017/03/25 jQuery
微信小程序 action-sheet 反馈上拉菜单简单实例
2017/05/11 Javascript
JavaScript文件的同步和异步加载的实现代码
2017/08/19 Javascript
浅谈JS的原型和继承
2019/05/08 Javascript
vue实现购物车结算功能
2020/06/18 Javascript
python通过ElementTree操作XML获取结点读取属性美化XML
2013/12/02 Python
Python实现将HTML转换成doc格式文件的方法示例
2017/11/20 Python
Python使用pylab库实现绘制直方图功能示例
2018/06/01 Python
Flask框架配置与调试操作示例
2018/07/23 Python
python正则表达式匹配不包含某几个字符的字符串方法
2019/07/23 Python
用python3 urllib破解有道翻译反爬虫机制详解
2019/08/14 Python
python系列 文件操作的代码
2019/10/06 Python
python GUI库图形界面开发之PyQt5打开保存对话框QFileDialog详细使用方法与实例
2020/02/27 Python
树莓派升级python的具体步骤
2020/07/05 Python
Python面向对象多态实现原理及代码实例
2020/09/16 Python
纯CSS3实现表单验证效果(非常不错)
2017/01/18 HTML / CSS
Android面试题及答案
2015/09/04 面试题
一套带网友答案的.NET笔试题
2016/12/06 面试题
优秀广告词大全
2014/03/19 职场文书
《广玉兰》教学反思
2014/04/14 职场文书
质量管理标语
2014/06/12 职场文书
2016个人先进事迹材料范文
2016/03/01 职场文书
python套接字socket通信
2022/04/01 Python
python 使用pandas读取csv文件的方法
2022/12/24 Python