热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

了不起的node.js读书笔记之mongodb数据库交互-MongoDB

了不起的node.js读书笔记之mongodb数据库交互是千自学中一篇关于MongoDB的文章简介: 这周的学习主要是nodejs的数据库交互上,并使用jade模板一起做了一个用户验证的网站。主要是遇到了一下几个问题。1.mongodb版本过低 npmERR!Not

 这周的学习主要是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后端框架。学习中遇到的问题也都记录在笔记本上。



推荐阅读
  • 基于Node.js的高性能实时消息推送系统通过集成Socket.IO和Express框架,实现了高效的高并发消息转发功能。该系统能够支持大量用户同时在线,并确保消息的实时性和可靠性,适用于需要即时通信的应用场景。 ... [详细]
  • 在Linux系统中,MySQL的用户权限管理是运维人员必须掌握的关键技能之一。本文详细介绍了MySQL用户和权限管理的相关概念,包括MySQL用户的概念及其与VSFTPD虚拟用户的相似性,以及密码管理的重要性。此外,还深入探讨了如何通过命令行工具和配置文件进行用户权限的设置和调整,确保系统的安全性和稳定性。 ... [详细]
  • npm 发布 WhalMakeLink 包:链接管理与优化的新选择
    WhalMakeLink 是一个强大的 npm 工具,专为项目管理和优化而设计。它能够自动在项目的 README 文件中生成当前工程目录下所有子项目的链接地址,极大提升了开发效率和文档维护的便捷性。通过简单的 `npm init` 命令即可快速启动和配置该工具,适用于各种复杂项目结构。 示例演示了其基本用法和功能。 ... [详细]
  • 本文探讨了Node.js Cluster模块在多核CPU环境下的应用及其性能测试。通过安装`async`包并利用Node.js自带的`http`和`cluster`模块,创建了一个名为`cluster.js`的文件,该文件根据系统CPU核心数动态生成多个工作进程,以实现负载均衡和提高应用性能。实验结果表明,使用Cluster模块能够显著提升高并发场景下的响应速度和处理能力。 ... [详细]
  • 利用 Gmail API 实现 Node.js 定时自动发送邮件功能
    功能:利用Node每天定时发送邮件给指定邮箱。需要的npm包:nodemailernode-schedule实现步骤:配置nodemailer发送邮件开启定时邮件发送 ... [详细]
  • Linux系统资源限制与优化策略探析
    2019独角兽企业重金招聘Python工程师标准限制用户对系统资源的使用,可以避免拒绝服务(如:创建很多进程、消耗系统的内存等 ... [详细]
  • 从无到有,构建个人专属的操作系统解决方案
    操作系统(OS)被誉为程序员的三大浪漫之一,常被比喻为计算机的灵魂、大脑、内核和基石,其重要性不言而喻。本文将详细介绍如何从零开始构建个人专属的操作系统解决方案,涵盖从需求分析到系统设计、开发与测试的全过程,帮助读者深入理解操作系统的本质与实现方法。 ... [详细]
  • Mongoose E11000 错误:集合中出现重复键问题分析与解决 ... [详细]
  • 初次接触AJAX是在去年,当时主要是通过手动编写客户端代码来实现,还需处理被请求的页面,过程相当繁琐。尽管之前就听说过AJAX.NET,但一直没有机会深入了解。本文将作为初学者的指南,详细介绍AJAX.NET的基本概念、核心功能及其在实际项目中的应用技巧,帮助读者快速上手并掌握这一强大的开发工具。 ... [详细]
  • HTML5 Web存储技术是许多开发者青睐本地应用程序的重要原因之一,因为它能够实现在客户端本地存储数据。HTML5通过引入Web Storage API,使得Web应用程序能够在浏览器中高效地存储数据,从而提升了应用的性能和用户体验。相较于传统的Cookie机制,Web Storage不仅提供了更大的存储容量,还简化了数据管理和访问的方式。本文将从基础概念、关键技术到实际应用,全面解析HTML5 Web存储技术,帮助读者深入了解其工作原理和应用场景。 ... [详细]
  • Django项目中配置媒体文件路径的详细步骤与最佳实践
    在Django项目中配置媒体文件路径的详细步骤包括:首先,创建一个新的应用(如 `app02`),然后在 `settings.py` 文件中配置媒体文件的存储路径。具体来说,需要导入 `os` 模块,并使用 `os.path.join` 方法来指定媒体文件的保存目录。此外,建议在开发和生产环境中分别设置不同的媒体文件路径,以确保项目的灵活性和安全性。为了更好地管理和访问媒体文件,还可以在 `urls.py` 中添加相应的URL配置,以便在开发服务器上直接访问这些文件。 ... [详细]
  • 本文为初学者提供了 Koa 框架的入门指南,通过实例代码展示了如何初始化 Koa 应用及使用中间件。例如,通过 `app.use` 方法添加一个简单的日志中间件,记录每个请求的详细信息,帮助开发者更好地理解和掌握 Koa 的核心功能。 ... [详细]
  • 使用 Vue 集成 iScroll 实现移动端表格横向滚动与固定列功能 ... [详细]
  • 在Hibernate开发过程中,经常会遇到`java.lang.IllegalArgumentException: org.hibernate.QueryException`这一异常。该问题通常由查询语句中的语法错误或不兼容的参数类型引起。本文将深入分析该异常的成因,并提供多种有效的解决策略,包括检查HQL语句的正确性、确保实体类属性与数据库字段的一致性,以及合理配置Hibernate的查询参数。通过这些方法,开发者可以快速定位并解决相关问题,提高系统的稳定性和可靠性。 ... [详细]
  • 在我的项目中,我访问MySQL数据库。我可以通过该程序在此数据库中调用并运行查 ... [详细]
author-avatar
oo欣呐呐
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有