了不起的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让返回的内容显示在特定div里(代码少而精悍)
Jun 23 Javascript
深入浅出分析javaScript中this用法
May 09 Javascript
javascript中caller和callee详解
Aug 10 Javascript
使用jQuery Mobile框架开发移动端Web App的入门教程
May 17 Javascript
AngularJS控制器详解及示例代码
Aug 16 Javascript
js实现简易垂直滚动条
Feb 22 Javascript
快速解决angularJS中用post方法时后台拿不到值的问题
Aug 14 Javascript
微信小程序视图容器(swiper)组件创建轮播图
Jun 19 Javascript
vue+express+jwt持久化登录的方法
Jun 14 Javascript
layui form.render('select', 'test2') 更新渲染的方法
Sep 27 Javascript
jQuery实现手风琴效果(蒙版)
Jan 11 jQuery
微信小程序的引导页实现代码
Jun 24 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函数serialize()与unserialize()用法实例
2014/11/06 PHP
PHP实现采集抓取淘宝网单个商品信息
2015/01/08 PHP
php session的锁和并发
2016/01/22 PHP
centos下file_put_contents()无法写入文件的原因及解决方法
2017/04/01 PHP
不间断滚动JS打包类,基本可以实现所有的滚动效果,太强了
2007/12/08 Javascript
JQuery中each()的使用方法说明
2010/08/19 Javascript
在jQuery中 关于json空对象筛选替换
2013/04/15 Javascript
理运用命名空间让js不产生冲突避免全局变量的泛滥
2014/06/15 Javascript
Extjs表单输入框异步校验的插件实现方法
2017/03/20 Javascript
es7学习教程之Decorators(修饰器)详解
2017/07/21 Javascript
关于JS与jQuery中的文档加载问题
2017/08/22 jQuery
JS获取一个表单字段中多条数据并转化为json格式
2017/10/17 Javascript
vue组件中的数据传递方法
2018/05/14 Javascript
使用webpack搭建react开发环境的方法
2018/05/15 Javascript
vue router 组件的高级应用实例代码
2019/04/08 Javascript
关于JavaScript 数组你应该知道的事情(推荐)
2019/04/10 Javascript
vue更改数组中的值实例代码详解
2020/02/07 Javascript
用vue 实现手机触屏滑动功能
2020/05/28 Javascript
vue实现两个组件之间数据共享和修改操作
2020/11/12 Javascript
Python中的groupby分组功能的实例代码
2018/07/11 Python
python对于requests的封装方法详解
2019/01/03 Python
Python中的十大图像处理工具(小结)
2019/06/10 Python
python保留格式汇总各部门excel内容的实现思路
2020/06/01 Python
sqlalchemy实现时间列自动更新教程
2020/09/02 Python
详解pycharm的python包opencv(cv2)无代码提示问题的解决
2021/01/29 Python
美国知名的家庭连锁百货商店:Boscov’s
2017/07/27 全球购物
黄色火烈鸟:De Gele Flamingo
2019/03/18 全球购物
校本教研工作方案
2014/01/14 职场文书
大学生实习证明范本
2014/01/15 职场文书
初中考试作弊检讨书
2014/02/01 职场文书
2014年教务处工作总结
2014/12/03 职场文书
孝老爱亲事迹材料
2014/12/24 职场文书
2015年环境整治工作总结
2015/05/22 职场文书
用 Python 元类的特性实现 ORM 框架
2021/05/19 Python
python unittest单元测试的步骤分析
2021/08/02 Python
Python中如何处理常见报错
2022/01/18 Python