了不起的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 多行滚动代码(附详细解释)
Jun 17 Javascript
js中的屏蔽的使用示例
Jul 30 Javascript
JQuery 文本框回车跳到下一个文本框示例代码
Aug 30 Javascript
JavaScript数据库TaffyDB用法实例分析
Jul 27 Javascript
jQuery拖动元素并对元素进行重新排序
Dec 30 Javascript
JS模拟的Map类实现方法
Jun 17 Javascript
JS实现获取当前URL和来源URL的方法
Aug 24 Javascript
浅谈webpack 构建性能优化策略小结
Jun 13 Javascript
jQuery实现基本动画效果的方法详解
Sep 06 jQuery
layui关闭层级、简单监听的实例
Sep 06 Javascript
mpvue实现左侧导航与右侧内容的联动
Oct 21 Javascript
JS实现可以用键盘方向键控制的动画
Dec 11 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多例模式介绍
2013/06/24 PHP
解析array splice的移除数组中指定键的值,返回一个新的数组
2013/07/02 PHP
如何修改和添加Apache的默认站点目录
2013/07/05 PHP
PHP Curl多线程原理实例详解
2013/11/06 PHP
Zend Framework框架之Zend_Mail实现发送Email邮件验证功能及解决标题乱码的方法
2016/03/21 PHP
PHP使用正则表达式实现过滤非法字符串功能示例
2018/06/04 PHP
PHP序列化的四种实现方法与横向对比
2018/11/29 PHP
thinkphp5框架结合mysql实现微信登录和自定义分享链接与图文功能示例
2019/08/13 PHP
ASP.NET中基于JQUERY的高性能的TreeView补充
2011/02/23 Javascript
基于jquery跨浏览器显示的file上传控件
2011/10/24 Javascript
jQuery统计上传文件大小的方法
2015/01/24 Javascript
js原生Ajax的封装和原理详解
2017/03/11 Javascript
jQuery中clone()函数实现表单中增加和减少输入项
2017/05/13 jQuery
详解vue中computed 和 watch的异同
2017/06/30 Javascript
微信小程序getLocation 需要在app.json中声明permission字段
2020/03/03 Javascript
vue 递归组件的简单使用示例
2021/01/14 Vue.js
[52:29]DOTA2上海特级锦标赛主赛事日 - 2 胜者组第一轮#3Secret VS OG第三局
2016/03/03 DOTA
Python中的推导式使用详解
2015/06/03 Python
Python数据库的连接实现方法与注意事项
2016/02/27 Python
Python安装官方whl包和tar.gz包的方法(推荐)
2017/06/04 Python
Python set常用操作函数集锦
2017/11/15 Python
python实现堆和索引堆的代码示例
2018/03/19 Python
Tensorflow 实现修改张量特定元素的值方法
2018/07/30 Python
Python实现账号密码输错三次即锁定功能简单示例
2019/03/29 Python
python 基于wx实现音乐播放
2020/11/24 Python
Html5页面获取微信公众号的openid的方法
2020/05/12 HTML / CSS
中医专业应届生求职信
2013/11/17 职场文书
致垒球运动员加油稿
2014/02/16 职场文书
事业单位年度考核评语
2014/12/31 职场文书
硕士学位论文评语
2014/12/31 职场文书
2015年派出所工作总结
2015/04/24 职场文书
社会实践单位意见
2015/06/05 职场文书
信息技术课教学反思
2016/02/23 职场文书
Python使用PyYAML库读写yaml文件的方法
2022/04/06 Python
nginx配置限速限流基于内置模块
2022/05/02 Servers
postgresql如何找到表中重复数据的行并删除
2023/05/08 MySQL