了不起的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 相关文章推荐
动态创建样式表在各浏览器中的差异测试代码
Sep 13 Javascript
jquery实现手风琴效果实例代码
Nov 15 Javascript
javascript中的nextSibling使用陷(da)阱(keng)
May 05 Javascript
JQuery操作元素的css样式
Mar 09 Javascript
使用控制台破解百小度一个月只准改一次名字
Aug 13 Javascript
原生js仿jquery animate动画效果
Jul 13 Javascript
非常优秀的JS图片轮播插件Swiper的用法
Jan 03 Javascript
jQuery实现标签页效果实战(4)
Feb 08 Javascript
vue 组件的封装之基于axios的ajax请求方法
Aug 11 Javascript
详解React服务端渲染从入门到精通
Mar 28 Javascript
Mpvue中使用Vant Weapp组件库的方法步骤
May 16 Javascript
返回上一个url并刷新界面的js代码
Sep 12 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 批量删除 sql语句
2009/06/05 PHP
基于php 随机数的深入理解
2013/06/05 PHP
C#静态方法与非静态方法实例分析
2014/09/22 PHP
php基于mcrypt的加密解密实例
2014/10/27 PHP
JavaScript自定义等待wait函数实例分析
2015/03/23 Javascript
JavaScript的9种继承实现方式归纳
2015/05/18 Javascript
详解javascript的变量与标识符
2016/01/04 Javascript
jquery获取easyui日期控件的值实现方法
2016/11/09 Javascript
利用PM2部署node.js项目的方法教程
2017/05/10 Javascript
JavaScript数组push方法使用注意事项
2017/10/30 Javascript
基于layui数据表格以及传数据的方式
2018/08/19 Javascript
webpack打包nodejs项目的方法
2018/09/26 NodeJs
js实现选项卡效果
2020/03/07 Javascript
vue输入框使用模糊搜索功能的实现代码
2020/05/26 Javascript
Javascript实现贪吃蛇小游戏(含详细注释)
2020/10/23 Javascript
python清除指定目录内所有文件中script的方法
2015/06/30 Python
python 全文检索引擎详解
2017/04/25 Python
疯狂上涨的Python 开发者应从2.x还是3.x着手?
2017/11/16 Python
用python处理MS Word的实例讲解
2018/05/08 Python
在python中实现将一张图片剪切成四份的方法
2018/12/05 Python
PyTorch预训练的实现
2019/09/18 Python
基于python及pytorch中乘法的使用详解
2019/12/27 Python
Python内置类型性能分析过程实例
2020/01/29 Python
Django实现从数据库中获取到的数据转换为dict
2020/03/27 Python
idea2020手动安装python插件的实现方法
2020/07/17 Python
工程专业毕业生自荐信范文
2013/12/25 职场文书
竞选班长自荐书范文
2014/03/09 职场文书
节约用水标语
2014/06/11 职场文书
经营目标管理责任书
2014/07/25 职场文书
乡镇党的群众路线教育实践活动总结报告
2014/10/30 职场文书
整改落实自查报告
2014/11/05 职场文书
项目负责人岗位职责
2015/02/15 职场文书
2016春季校长开学典礼致辞
2015/11/26 职场文书
护士自荐信范文(2016推荐篇)
2016/01/28 职场文书
2016年教代会开幕词
2016/03/04 职场文书
2016年第十四个公民道德宣传日活动总
2016/04/01 职场文书