了不起的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 相关文章推荐
小型js框架veryide.librar源代码
Mar 05 Javascript
js限制文本框为整数和货币的函数代码
Oct 13 Javascript
让你的CSS像Jquery一样做筛选的实现方法
Jul 10 Javascript
JS中的public和private对象,即static修饰符
Jan 18 Javascript
服务器端的JavaScript脚本 Node.js 使用入门
Mar 07 Javascript
input 输入框获得/失去焦点时隐藏/显示文字(jquery版)
Apr 02 Javascript
使用JS获取当前地理位置方法汇总
Dec 18 Javascript
jquery地址栏链接与a标签链接匹配之特效代码总结
Aug 24 Javascript
百度坐标(BD09)、国测局坐标(火星坐标,GCJ02)、和WGS84坐标系之间的转换
Feb 19 Javascript
Angular4编程之表单响应功能示例
Dec 13 Javascript
vue+导航锚点联动-滚动监听和点击平滑滚动跳转实例
Nov 13 Javascript
何时/使用 Vue3 render 函数的教程详解
Jul 25 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中批量修改文件后缀名的函数代码
2011/10/23 PHP
基于PHP Socket配置以及实例的详细介绍
2013/06/13 PHP
纯PHP生成的一个树叶图片画图例子
2014/04/16 PHP
浅谈php扩展imagick
2014/06/02 PHP
php结合redis高并发下发帖、发微博的实现方法
2016/12/15 PHP
微信公众号开发之通过接口删除菜单
2017/02/20 PHP
PHP中Cookie的使用详解(简单易懂)
2017/04/28 PHP
jQuery中:disabled选择器用法实例
2015/01/04 Javascript
JavaScript如何实现对数字保留两位小数一位自动补零
2015/12/18 Javascript
初探nodeJS
2017/01/24 NodeJs
微信小程序实现滚动消息通知
2018/02/02 Javascript
vue.js计算属性computed用法实例分析
2018/07/06 Javascript
在小程序中使用Echart图表的示例代码
2018/08/02 Javascript
Vue递归实现树形菜单方法实例
2018/11/06 Javascript
vue文件运行的方法教学
2019/02/12 Javascript
JavaScript实现省市区三级联动
2020/02/13 Javascript
Python使用Srapy框架爬虫模拟登陆并抓取知乎内容
2016/07/02 Python
Python 爬虫模拟登陆知乎
2016/09/23 Python
pycharm新建一个python工程步骤
2019/07/16 Python
python的faker库用法
2019/11/28 Python
python如何将两张图片生成为全景图片
2020/03/05 Python
纯css3(无图片/js)制作的几个社交媒体网站的图标
2013/03/21 HTML / CSS
如何实现一个自定义类的序列化
2012/05/22 面试题
《小白兔和小灰兔》教学反思
2014/02/18 职场文书
企业晚会策划方案
2014/05/29 职场文书
医药公司采购员岗位职责
2014/09/12 职场文书
产品陈列协议书(标准版)
2014/09/17 职场文书
研究生个人学年总结
2015/02/14 职场文书
辣妈辣妹观后感
2015/06/10 职场文书
2016年11月份红领巾广播稿
2015/12/21 职场文书
干货:我将这样书写我的演讲稿!
2019/05/09 职场文书
2019年亲子运动会口号
2019/10/11 职场文书
MySQL 隔离数据列和前缀索引的使用总结
2021/05/14 MySQL
Python 游戏大作炫酷机甲闯关游戏爆肝数千行代码实现案例进阶
2021/10/16 Python
win10频率超出范围怎么办?win10老显示超出工作频率范围的解决方法
2022/07/07 数码科技
mysql sock文件存储了什么信息
2022/07/15 MySQL