了不起的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 相关文章推荐
Javascript面向对象之四 继承
Feb 08 Javascript
基于jquery的拖动布局插件
Nov 25 Javascript
javascript禁制后退键(Backspace)实例代码
Nov 15 Javascript
jquery的trigger和triggerHandler的区别示例介绍
Apr 20 Javascript
javascript 操作符(~、&amp;、|、^、)使用案例
Dec 31 Javascript
HTML5使用DeviceOrientation实现摇一摇功能
Jun 05 Javascript
Javascript+CSS3实现进度条效果
Oct 28 Javascript
网页中的图片查看器viewjs使用方法
Jul 11 Javascript
backbone简介_动力节点Java学院整理
Jul 14 Javascript
详解如何在vue项目中使用lodop打印插件
Sep 27 Javascript
微信小程序五子棋游戏的悔棋实现方法【附demo源码下载】
Feb 20 Javascript
微信小程序中如何计算距离某个节日还有多少天
Jul 15 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
探讨:web上存漏洞及原理分析、防范方法
2013/06/29 PHP
PHP获取youku视频真实flv文件地址的方法
2014/12/23 PHP
laravel + vue实现的数据统计绘图(今天、7天、30天数据)
2018/07/31 PHP
游戏人文件夹程序 ver 4.03
2006/07/14 Javascript
Javascript 继承实现例子
2009/08/12 Javascript
window.ActiveXObject使用说明
2010/11/08 Javascript
js 静态动态成员 and 信息的封装和隐藏
2011/05/29 Javascript
兼容IE、FireFox、Chrome等浏览器的xml处理函数js代码
2011/11/30 Javascript
js左侧三级菜单导航实例代码
2013/09/13 Javascript
JavaScript在IE和FF下的兼容性问题
2014/05/19 Javascript
深入分析JSONP跨域的原理
2014/12/10 Javascript
Ajax中解析Json的两种方法对比分析
2015/06/25 Javascript
SpringMVC返回json数据的三种方式
2015/12/10 Javascript
jQuery点击输入框显示验证码图片
2016/05/19 Javascript
jQuery+json实现动态创建复杂表格table的方法
2016/10/25 Javascript
JavaScript hasOwnProperty() 函数实例详解
2017/08/04 Javascript
原生JS与jQuery编写简单选项卡
2017/10/30 jQuery
微信小程序如何获取openid及用户信息
2018/01/26 Javascript
node.js博客项目开发手记
2018/03/16 Javascript
详解Vue中CSS样式穿透问题
2019/09/12 Javascript
vue路由拦截器和请求拦截器知识点总结
2019/11/08 Javascript
[04:28]DOTA2亚洲邀请赛小组赛第五日 TOP10精彩集锦
2015/02/03 DOTA
[00:37]DOTA2上海特级锦标赛 OG战队宣传片
2016/03/03 DOTA
在Debian下配置Python+Django+Nginx+uWSGI+MySQL的教程
2015/04/25 Python
一个基于flask的web应用诞生 bootstrap框架美化(3)
2017/04/11 Python
Python实现手写一个类似django的web框架示例
2018/07/20 Python
css3 border-image使用说明
2010/06/23 HTML / CSS
美国最大的宠物药店:1-800-PetMeds
2016/10/02 全球购物
Get The Label中文官网:英国运动时尚购物平台
2017/04/19 全球购物
客服实习的个人自我鉴定
2013/10/20 职场文书
机械专业应届毕业生自荐书
2014/06/12 职场文书
合伙经营协议书范本(通用版)
2014/12/03 职场文书
伊索寓言读书笔记
2015/06/30 职场文书
婚宴来宾致辞
2015/07/28 职场文书
500字作文之周记
2019/12/13 职场文书
Python实战之实现康威生命游戏
2021/04/26 Python