了不起的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中的107个基础知识收集整理 推荐
Mar 29 Javascript
jquery form 隐藏的input 选择
Apr 29 Javascript
jquery动态添加删除一行数据示例
Jun 12 Javascript
javascript面向对象之共享成员属性与方法及prototype关键字用法
Jan 13 Javascript
javascript将DOM节点添加到文档的方法实例分析
Aug 04 Javascript
jQuery Chart图表制作组件Highcharts用法详解
Jun 01 Javascript
详解关于Vuex的action传入多个参数的问题
Feb 22 Javascript
VueJS 取得 URL 参数值的方法
Jul 19 Javascript
vue实现配置全局访问路径头(axios)
Nov 01 Javascript
vue项目强制清除页面缓存的例子
Nov 06 Javascript
windows下create-react-app 升级至3.3.1版本踩坑记
Feb 17 Javascript
vue常用高阶函数及综合实例
Feb 25 Vue.js
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
预告映像公开!第1章续篇剧场版动画《Princess Principal Crown Handler》4月10日上映!
2020/03/06 日漫
一致性哈希算法以及其PHP实现详细解析
2013/08/24 PHP
SESSION存放在数据库用法实例
2015/08/08 PHP
Zend Framework教程之模型Model用法简单实例
2016/03/04 PHP
PHP面向对象五大原则之里氏替换原则(LSP)详解
2018/04/08 PHP
laravel实现前后台路由分离的方法
2019/10/13 PHP
PHP设计模式之外观模式(Facade)入门与应用详解
2019/12/13 PHP
php gethostbyname获取域名ip地址函数详解
2010/01/24 Javascript
Javascript Memoizer浅析
2014/10/16 Javascript
jQuery中offsetParent()方法用法实例
2015/01/19 Javascript
js return返回多个值,通过对象的属性访问方法
2017/02/21 Javascript
vue 实现边输入边搜索功能的实例讲解
2018/09/16 Javascript
详解Axios 如何取消已发送的请求
2018/10/20 Javascript
AngularJS上传文件的示例代码
2018/11/10 Javascript
用Golang运行JavaScript的实现示例
2019/11/25 Javascript
Vue实现鼠标经过文字显示悬浮框效果的示例代码
2020/10/14 Javascript
vue实现登录、注册、退出、跳转等功能
2020/12/23 Vue.js
python Django模板的使用方法(图文)
2013/11/04 Python
Python合并同一个文件夹下所有PDF文件的方法
2019/03/11 Python
python3 小数位的四舍五入(用两种方法解决round 遇5不进)
2019/04/11 Python
详解Python 函数如何重载?
2019/04/23 Python
Python实现微信消息防撤回功能的实例代码
2019/04/29 Python
Python Request类源码实现方法及原理解析
2020/08/17 Python
纯CSS3实现鼠标滑过按钮动画第二节
2020/07/16 HTML / CSS
Bootstrap 学习分享
2012/11/12 HTML / CSS
Html5适配iphoneX刘海屏的简单实现
2019/04/09 HTML / CSS
video下autoplay属性无效的解决方法(添加muted属性)
2020/05/19 HTML / CSS
莫斯科绝对前卫最秘密的商店:SVMoscow
2017/10/23 全球购物
Belvilla德国:在线预订度假屋
2018/04/10 全球购物
纽约市的奢华内衣目的地:Anya Lust
2019/08/02 全球购物
善意的谎言事例
2014/02/15 职场文书
英文求职信写作小建议
2014/02/16 职场文书
优秀共产党员先进事迹材料
2014/05/06 职场文书
《中国梦我的梦》中学生演讲稿
2014/08/20 职场文书
学校开学标语
2014/10/06 职场文书
MySQL非空约束(not null)案例讲解
2021/08/23 MySQL