了不起的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 相关文章推荐
关于Ext中form移除textfield方法:hide(),setVisible(false),remove()
Dec 02 Javascript
JavaScript面向对象知识串结(读JavaScript高级程序设计(第三版))
Jul 17 Javascript
解析dom中的children对象数组元素firstChild,lastChild的使用
Jul 10 Javascript
js获取本机的外网/广域网ip地址完整源码
Aug 12 Javascript
在JavaScript中处理字符串之link()方法的使用
Jun 08 Javascript
基于jquery实现放大镜效果
Aug 17 Javascript
JS中使用FormData上传文件、图片的方法
Aug 07 Javascript
jquery遍历标签中自定义的属性方法
Sep 17 Javascript
微信小程序 WXML、WXSS 和JS介绍及详解
Oct 08 Javascript
JS奇技之利用scroll来监听resize详解
Jun 15 Javascript
vue全局组件与局部组件使用方法详解
Mar 29 Javascript
JavaScript中this用法学习笔记
Mar 17 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中显示格式化的用户输入
2006/10/09 PHP
php 设计模式之 单例模式
2008/12/19 PHP
PHP计数器的实现代码
2013/06/08 PHP
PHP文件锁函数flock()详细介绍
2014/11/18 PHP
PHP动态规划解决0-1背包问题实例分析
2015/03/23 PHP
PHP编程实现阳历转换为阴历的方法实例
2017/08/08 PHP
js 新浪的一个图片播放图片轮换效果代码
2008/07/15 Javascript
javascript中的107个基础知识收集整理 推荐
2010/03/29 Javascript
Jquery实现兼容各大浏览器的Enter回车切换输入焦点的方法
2014/09/01 Javascript
jquery 中ajax执行的优先级
2015/06/22 Javascript
实例代码详解jquery.slides.js
2015/11/16 Javascript
JS实现将Asp.Net的DateTime Json类型转换为标准时间的方法
2016/08/02 Javascript
JavaScript奇技淫巧44招【实用】
2016/12/11 Javascript
Vuex简单入门
2017/04/19 Javascript
numpy中索引和切片详解
2017/12/15 Python
Django实现组合搜索的方法示例
2018/01/23 Python
pandas 空的dataframe 插入列名的示例
2018/10/30 Python
python操作文件的参数整理
2019/06/11 Python
python中时间转换datetime和pd.to_datetime详析
2019/08/11 Python
python随机生成大小写字母数字混合密码(仅20行代码)
2020/02/01 Python
关于Python turtle库使用时坐标的确定方法
2020/03/19 Python
使用pytorch 筛选出一定范围的值
2020/06/28 Python
实现CSS3中的border-radius(边框圆角)示例代码
2013/07/19 HTML / CSS
canvas 阴影和图形变换的示例代码
2018/01/02 HTML / CSS
日本土著品牌,综合型购物网站:Cecile
2016/08/23 全球购物
美国网上鞋子零售商:Dr. Scholl’s Shoes
2017/11/17 全球购物
凯撒娱乐:Caesars Entertainment
2018/02/23 全球购物
英国复古和经典球衣网站:Vintage Football Shirts
2018/10/05 全球购物
Wiggle澳大利亚:自行车、跑步、游泳商店
2020/11/07 全球购物
法国亚马逊官方网站:Amazon.fr
2020/12/19 全球购物
生物制药毕业生自荐信
2013/10/16 职场文书
儿科护士实习自我鉴定
2013/10/17 职场文书
求职简历中个人的自我评价
2013/12/25 职场文书
人事行政专员岗位职责
2014/07/23 职场文书
Python实现Telnet自动连接检测密码的示例
2021/04/16 Python
代码复现python目标检测yolo3详解预测
2022/05/06 Python