了不起的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 相关文章推荐
popdiv
Jul 14 Javascript
javascript appendChild,innerHTML,join性能比较代码
Aug 29 Javascript
实现只能输入数字的input不用replace方法
Sep 12 Javascript
JQuery的ON()方法支持的所有事件罗列
Feb 28 Javascript
IE10中flexigrid无法显示数据的解决方法
Jul 26 Javascript
JavaScript中三种异步上传文件方式
Mar 06 Javascript
javaScript事件机制兼容【详细整理】
Jul 23 Javascript
BootStrap实现带关闭按钮功能
Feb 15 Javascript
JavaScript订单操作小程序完整版
Jun 23 Javascript
详解在vue-test-utils中mock全局对象
Nov 07 Javascript
webpack 从指定入口文件中提取公共文件的方法
Nov 13 Javascript
关于vue2强制刷新,解决页面不会重新渲染的问题
Oct 29 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 self与$this的详解
2013/06/08 PHP
解决php使用异步调用获取数据时出现(错误c00ce56e导致此项操作无法完成)
2013/07/03 PHP
golang与PHP输出excel示例
2016/07/22 PHP
实例分析PHP将字符串转换成数字的方法
2019/01/27 PHP
Laravel使用RabbitMQ的方法示例
2019/06/18 PHP
php如何获取Http请求
2020/04/30 PHP
Js+Dhtml:WEB程序员简易开发工具包(预先体验版)
2006/11/07 Javascript
javascript基于jQuery的表格悬停变色/恢复,表格点击变色/恢复,点击行选Checkbox
2008/08/05 Javascript
Javascript document.referrer判断访客来源网址
2020/05/15 Javascript
jquery实现焦点图片随机切换效果的方法
2015/03/12 Javascript
如何提高javascript加载速度
2016/12/26 Javascript
Bootstrap modal 多弹窗之叠加显示不出弹窗问题的解决方案
2017/02/23 Javascript
vue中如何实现变量和字符串拼接
2017/06/19 Javascript
在React中如何优雅的处理事件响应详解
2017/07/24 Javascript
微信小程序自定义组件components(代码详解)
2019/10/21 Javascript
vue-cli3项目升级到vue-cli4 的方法总结
2020/03/19 Javascript
微信小程序 获取手机号 JavaScript解密示例代码详解
2020/05/14 Javascript
python实现多线程的两种方式
2016/05/22 Python
Python自动发邮件脚本
2017/03/31 Python
总结python 三种常见的内存泄漏场景
2020/11/20 Python
python中os.remove()用法及注意事项
2021/01/31 Python
Amaze UI 文件选择域的示例代码
2020/08/26 HTML / CSS
歌颂党的演讲稿
2014/09/10 职场文书
关于十八大的演讲稿
2014/09/15 职场文书
法定代表人授权委托书范文
2014/09/22 职场文书
招标授权委托书样本
2014/09/23 职场文书
领导参观欢迎词
2015/01/26 职场文书
2015教师个人工作总结范文
2015/03/31 职场文书
消防隐患整改通知书
2015/04/22 职场文书
房屋维修申请报告
2015/05/18 职场文书
毕业典礼主持词
2015/06/29 职场文书
2016年情人节问候语
2015/11/11 职场文书
慰问信(范文3篇)
2019/10/23 职场文书
Python爬虫基础讲解之请求
2021/05/13 Python
学会Python数据可视化必须尝试这7个库
2021/06/16 Python
《勇者辞职不干了》ED主题曲无字幕动画MV公开
2022/04/13 日漫