了不起的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 变量作用域 代码分析
Jun 26 Javascript
根据出生日期自动取得星座的js代码
Jul 20 Javascript
自动设置iframe大小的jQuery代码
Sep 11 Javascript
jQuery插件zepto.js简单实现tab切换
Jun 16 Javascript
jQuery实现的倒计时效果实例小结
Apr 16 Javascript
JS判断是否为JSON对象及是否存在某字段的方法(推荐)
Nov 29 Javascript
AngularJS1.X学习笔记2-数据绑定详解
Apr 01 Javascript
jquery图片放大镜效果
Jun 23 jQuery
ES6 Object方法扩展的应用实例分析
Jun 25 Javascript
微信小程序如何利用getCurrentPages进行页面传值
Jul 01 Javascript
nest.js 使用express需要提供多个静态目录的操作方法
Oct 24 Javascript
深入了解JS之作用域和闭包
Jun 16 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常用ODBC函数集(详细)
2013/06/24 PHP
PHP中遇到BOM、编码导致json_decode函数无法解析问题
2014/07/02 PHP
PHP常量使用的几个需要注意的地方(谨慎使用PHP中的常量)
2014/09/12 PHP
Mozilla 表达式 __noSuchMethod__
2009/04/05 Javascript
jquery中的sortable排序之后的保存状态的解决方法
2010/01/28 Javascript
js jquery数组介绍
2012/07/15 Javascript
利用Javascript判断操作系统的类型实现不同操作系统下的兼容性
2013/01/29 Javascript
JQuery中DOM实现事件移除的方法
2015/06/13 Javascript
微信小程序 页面跳转如何实现传值
2017/04/05 Javascript
ionic App问题总结系列之ionic点击系统返回键退出App
2017/08/19 Javascript
JS中验证整数和小数的正则表达式
2018/10/08 Javascript
JavaScript数据结构与算法之二叉树遍历算法详解【先序、中序、后序】
2019/02/21 Javascript
layui 表格操作列按钮动态显示的实现方法
2019/09/06 Javascript
基于VUE实现判断设备是PC还是移动端
2020/07/03 Javascript
SpringBoot+Vue 前后端合并部署的配置方法
2020/12/30 Vue.js
[03:53]2016国际邀请赛中国区预选赛第三日TOP10精彩集锦
2016/06/29 DOTA
[59:44]2018DOTA2亚洲邀请赛 3.31 小组赛 B组 paiN vs iG
2018/03/31 DOTA
[46:57]EG vs Winstrike 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
Python代码的打包与发布详解
2014/07/30 Python
Python实现微信公众平台自定义菜单实例
2015/03/20 Python
对Python的Django框架中的项目进行单元测试的方法
2016/04/11 Python
Windows下的Python 3.6.1的下载与安装图文详解(适合32位和64位)
2018/02/21 Python
tensorflow 输出权重到csv或txt的实例
2018/06/14 Python
python+POP3实现批量下载邮件附件
2018/06/19 Python
python的debug实用工具 pdb详解
2019/07/12 Python
python实现桌面托盘气泡提示
2019/07/29 Python
python 浅谈serial与stm32通信的编码问题
2019/12/18 Python
利用keras加载训练好的.H5文件,并实现预测图片
2020/01/24 Python
Canvas绘制浮动球效果的示例
2017/12/29 HTML / CSS
请问如下代码执行后a和b的值分别是什么
2016/05/05 面试题
国外软件测试工程师面试题
2016/12/09 面试题
优秀员工表扬信
2014/01/17 职场文书
优秀共产党员推荐材料
2014/12/18 职场文书
电影红河谷观后感
2015/06/11 职场文书
党员干部学法用法心得体会
2016/01/21 职场文书
vue postcss-px2rem 自适应布局
2022/05/15 Vue.js