了不起的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的常见兼容问题及相关解决方法(chrome/IE/firefox)
Dec 31 Javascript
如何将网页表格内容导入excel
Feb 18 Javascript
js中把JSON字符串转换成JSON对象最好的方法
Mar 21 Javascript
学习Bootstrap滚动监听 附调用方法
Jul 02 Javascript
IE8利用自带的setCapture和releaseCapture解决iframe的拖拽事件方法
Oct 25 Javascript
关于微信jssdk实现多图片上传的一点心得分享
Dec 13 Javascript
discuz表情的JS提取方法分析
Mar 22 Javascript
vue的安装及element组件的安装方法
Mar 09 Javascript
javascript 代码是如何被压缩的示例代码
May 06 Javascript
mpvue 项目初始化及实现授权登录的实现方法
Jul 20 Javascript
使用Vant完成通知栏Notify的提示操作
Nov 11 Javascript
vue集成一个支持图片缩放拖拽的富文本编辑器
Jan 29 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
php在window iis的莫名问题的测试方法
2013/05/14 PHP
浅析PKI加密解密 OpenSSL
2013/07/01 PHP
php缓冲 output_buffering和ob_start使用介绍
2014/01/30 PHP
适用于抽奖程序、随机广告的PHP概率算法实例
2014/04/09 PHP
详解php用curl调用接口方法,get和post两种方式
2017/01/13 PHP
如何修改yii2.0自带的user表为其它的表
2017/08/01 PHP
php中输出json对象的值(实现方法)
2018/03/07 PHP
Linux下 php7安装redis的方法
2018/11/01 PHP
jquery dialog键盘事件代码
2010/08/01 Javascript
windows系统下简单nodejs安装及环境配置
2013/01/08 NodeJs
js跳转页面方法实现汇总
2014/02/11 Javascript
Javascript实现多彩雪花从天降散落效果的方法
2015/02/02 Javascript
JavaScript中闭包的写法和作用详解
2016/06/29 Javascript
JS如何设置iOS中微信浏览器的title
2016/11/22 Javascript
Vue.JS入门教程之列表渲染
2016/12/01 Javascript
canvas绘制爱心的几种方法总结(推荐)
2017/10/31 Javascript
微信小程序获取手机网络状态的方法【附源码下载】
2017/12/08 Javascript
详解html-webpack-plugin用法全解
2018/01/22 Javascript
详解如何用VUE写一个多用模态框组件模版
2018/09/27 Javascript
vue控制多行文字展开收起的实现示例
2019/10/11 Javascript
python正则表达式判断字符串是否是全部小写示例
2013/12/25 Python
python处理圆角图片、圆形图片的例子
2014/04/25 Python
python-视频分帧&amp;多帧合成视频实例
2019/12/10 Python
TensorBoard 计算图的可视化实现
2020/02/15 Python
Python多进程multiprocessing、进程池用法实例分析
2020/03/24 Python
Python学习之路之pycharm的第一个项目搭建过程
2020/06/18 Python
StubHub智利:购买和出售您的门票
2016/11/23 全球购物
英国最好的温室之家:Greenhouses Direct
2019/07/13 全球购物
自荐信结尾
2013/10/27 职场文书
网上开商店的创业计划书
2014/01/19 职场文书
优秀毕业生自我鉴定
2014/02/11 职场文书
本科应届生求职信
2014/08/05 职场文书
公民代理授权委托书
2014/09/24 职场文书
解析laravel使用workerman用户交互、服务器交互
2021/04/28 PHP
python 利用PyAutoGUI快速构建自动化操作脚本
2021/05/31 Python
微信小程序调用python模型
2022/04/21 Python