了不起的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 相关文章推荐
关于图片验证码设计的思考
Jan 29 Javascript
js操作iframe的一些方法介绍
Jun 25 Javascript
jQuery实现3D文字特效的方法
Mar 10 Javascript
jQuery插件animateSlide制作多点滑动幻灯片
Jun 11 Javascript
AngularJS基于ngInfiniteScroll实现下拉滚动加载的方法
Dec 14 Javascript
webpack搭建vue 项目的步骤
Dec 27 Javascript
基于JavaScript实现抽奖系统
Jan 16 Javascript
vue.js实现会动的简历(包含底部导航功能,编辑功能)
Apr 08 Javascript
原生js实现可兼容PC和移动端的拖动滑块功能详解【测试可用】
Aug 15 Javascript
关于angular引入ng-zorro的问题浅析
Sep 09 Javascript
jquery插件实现图片悬浮
Apr 16 jQuery
JavaScript架构localStorage特殊场景下二次封装操作
Jun 21 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
PHP.MVC的模板标签系统(一)
2006/09/05 PHP
php自动加载的两种实现方法
2010/06/21 PHP
Symfony2在Nginx下的配置方法图文教程
2016/02/04 PHP
PHP自动识别当前使用移动终端
2018/05/21 PHP
Thinkphp 在api开发中异常返回依然是html的解决方式
2019/10/16 PHP
用js实现计算加载页面所用的时间
2010/04/02 Javascript
jquery中 $.expr使用实例介绍
2014/06/09 Javascript
jQuery实现简单网页遮罩层/弹出层效果兼容IE6、IE7
2014/06/16 Javascript
jQuery Masonry瀑布流插件使用详解
2014/11/17 Javascript
跟我学习javascript的垃圾回收机制与内存管理
2015/11/23 Javascript
Javascript在IE和Firefox浏览器常见兼容性问题总结
2016/08/03 Javascript
使用node.js中的Buffer类处理二进制数据的方法
2016/11/26 Javascript
Json按某个键的值进行排序
2016/12/22 Javascript
javascript中replace使用方法总结
2017/03/01 Javascript
Node.js实现mysql连接池使用事务自动回收连接的方法示例
2018/02/03 Javascript
layui 实现表格某一列显示图标
2019/09/19 Javascript
VUE单页面切换动画代码(全网最好的切换效果)
2019/10/31 Javascript
javascript实现前端分页效果
2020/06/24 Javascript
JS实现简易贪吃蛇游戏
2020/08/24 Javascript
[03:06]3分钟带你回顾DOTA2完美盛典&完美大师赛
2017/12/06 DOTA
[40:06]DOTA2亚洲邀请赛 4.3 突围赛 Liquid vs VGJ.T 第一场
2018/04/04 DOTA
Python的装饰器模式与面向切面编程详解
2015/06/21 Python
Python使用PIL库实现验证码图片的方法
2016/03/11 Python
python使用pandas实现数据分割实例代码
2018/01/25 Python
Python读写及备份oracle数据库操作示例
2018/05/17 Python
PHP实现发送和接收JSON请求
2018/06/07 Python
python 模拟登陆github的示例
2020/12/04 Python
DHC中国官方购物网站:日本通信销售No.1化妆品
2016/08/20 全球购物
智能钱包:Ekster
2019/11/21 全球购物
中专毕业个人的自荐信格式
2013/09/21 职场文书
小学家长评语大全
2014/04/16 职场文书
求职自我推荐信
2014/06/25 职场文书
化学教育专业求职信
2014/07/08 职场文书
亮剑观后感600字
2015/06/05 职场文书
2016年母亲节广告语
2016/01/28 职场文书
解析Java中的static关键字
2021/06/14 Java/Android