了不起的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 相关文章推荐
开发中可能会用到的jQuery小技巧
Mar 07 Javascript
jQuery中$.ajax()和$.getJson()同步处理详解
Aug 12 Javascript
jquery使用ul模拟select实现表单美化的方法
Aug 18 Javascript
javascript获取wx.config内部字段解决微信分享
Mar 09 Javascript
javascript执行环境及作用域详解
May 05 Javascript
移动端web滚动分页的实现方法
May 05 Javascript
Javascript实现倒计时时差效果
May 18 Javascript
JavaScript无操作后屏保功能的实现方法
Jul 04 Javascript
ui-router中使用ocLazyLoad和resolve的具体方法
Oct 18 Javascript
Node.js上传文件功能之服务端如何获取文件上传进度
Feb 05 Javascript
Vue项目History模式404问题解决方法
Oct 31 Javascript
深入浅析golang zap 日志库使用(含文件切割、分级别存储和全局使用等)
Feb 19 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
JS option location 页面跳转实现代码
2008/12/27 Javascript
Javascript 检测键盘按键信息及键码值对应介绍
2013/01/03 Javascript
JQuery中根据属性或属性值获得元素(6种情况获取方法)
2013/01/17 Javascript
javascript检查表单数据是否改变的方法
2013/07/30 Javascript
jquery教程限制文本框只能输入数字和小数点示例分享
2014/01/13 Javascript
jquery果冻抖动效果实现方法
2015/01/15 Javascript
jQuery获取页面及个元素高度、宽度的总结——超实用
2015/07/28 Javascript
AngularJS基础 ng-non-bindable 指令详细介绍
2016/08/02 Javascript
Vue.JS入门教程之列表渲染
2016/12/01 Javascript
AngularJS框架中的双向数据绑定机制详解【减少需要重复的开发代码量】
2017/01/19 Javascript
jQuery简单绑定单个事件的方法示例
2017/06/10 jQuery
JavaScript之filter_动力节点Java学院整理
2017/06/28 Javascript
基于axios封装fetch方法及调用实例
2018/02/05 Javascript
微信小程序自定义可滑动日历界面
2018/12/28 Javascript
vue router 用户登陆功能的实例代码
2019/04/24 Javascript
Vue.js如何使用Socket.IO的示例代码
2019/09/05 Javascript
Echarts实现多条折线可拖拽效果
2019/12/19 Javascript
Python中的lstrip()方法使用简介
2015/05/19 Python
Python批量查询域名是否被注册过
2017/06/21 Python
Python书单 不将就
2017/07/11 Python
python+pandas生成指定日期和重采样的方法
2018/04/11 Python
python 去除txt文本中的空格、数字、特定字母等方法
2018/07/24 Python
Python 通过打码平台实现验证码的实现
2019/05/13 Python
python常用库之NumPy和sklearn入门
2019/07/11 Python
python实现简单的tcp 文件下载
2020/09/16 Python
Carter’s官方旗舰店:美国受欢迎的婴童服装品牌
2018/01/21 全球购物
Booking.com英国官网:全球酒店在线预订网站
2018/04/21 全球购物
Delphi CS笔试题
2014/01/04 面试题
初三英语教学计划
2015/01/23 职场文书
2015年数学教师工作总结
2015/05/20 职场文书
地道战观后感500字
2015/06/04 职场文书
律师催款函范文
2015/06/24 职场文书
同学会感言
2015/07/30 职场文书
2015年教师节感言
2015/08/03 职场文书
详解Python函数print用法
2021/06/18 Python
详解NumPy中的线性关系与数据修剪压缩
2022/05/25 Python