`
懒乔治
  • 浏览: 3276 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

关于node操作mongodb的二三事

 
阅读更多

      Mongodb是nosql中的翘楚,所以我的毕设就赶了一把潮流,用mongodb狠狠的在到是面前装了一下。结果结果导师说你这抄的太明显了叫喊    ╮(╯_╰)╭。

     由于mongodb中无主键概念,所有记录其都给生成 _id为唯一标示,集合取代了表。刚开始我还是用mysql思维去思考结果被项目组长训斥说不能快速接受新鲜事物。

     既然没了主键概念那外键也不幸免,没了外键与主键(其实mongo也有一些方法来实现这些sql特性)对于俩张表以上的联合操作,在当时真的让我很无奈。且node是异步稍不注意,代码就成了回调深渊,要多深有多深。。。

      不过对于node中的异步操作有多种方式解决,导包、promise等,promise大家可以根据简书上的教程去学习,语言简练且不缺乏段子,总之你看了会受益匪浅。在这里我给大家推荐async包,具体实例大家可以去github上根据demo练习。

      我只贴出我所用到的map流:

mongoClient.connect(setting.dbInfo, function (err, db) {
        var teacher = db.collection('teacher');
        teacher.find({course:{$exists:true}}).toArray(function (err, teacherDoc) {
            if (err) {
                console.log('error if ------>')
                res.status('500');
                res.json({
                    result: 'ERROR_1',
                    resson: '#_1 System error! '
                });
            }
            if (teacherDoc.length > 0) {
                res.status('200');
                async.map(teacherDoc, function (itemT, callbackT) {
                    async.map(itemT.course, function (itemC, callbackC) {
                        var course = db.collection('course');
                        course.find({'name': itemC}).toArray(function (err, courseDoc) {
                            if (err) {
                                callbackC(err, null)
                            } else {
                                courseDoc[0].teacherName = itemT.name;
                                courseDoc[0].teacherTel = itemT.tel_phone;
                                courseDoc[0].teacherEdu = itemT.edu_level;
                                courseDoc[0].teacherSex = itemT.sex;
                                courseDoc[0].teacherAge = itemT.age;
                                callbackC(null, courseDoc[0]);
                            }
                        });
                    }, function (errc, resultC) {
                        if (errc) {
                            console.log(errc);
                        } else {
                            callbackT(null, resultC)
                        }
                    })
                }, function (errr, resultT) {
                    if (errr) {
                        console.log(errr);
                    } else {
                        res.json({
                            result: 'OK',
                            teaAll: _.flatten(resultT)
                        });
                        db.close();
                    }
                });
            } else {
                res.status('200');
                res.json({
                    result: 'ERROR_2',
                    resson: '#_2 Not exit!'
                })
            }
        });
    });

       async的git地址:https://github.com/caolan/async/

0
0
分享到:
评论

相关推荐

    前端 Vue+Node+MongoDB高级全栈开发

    在本篇内容中,我们将深入探讨“前端 Vue+Node+MongoDB 高级全栈开发”的核心知识点。通过本文的学习,您将能够更好地理解如何利用这些技术构建高效、灵活且可扩展的应用程序。 ### 一、Vue.js简介 **Vue.js** 是...

    Egg-mongo基于node-mongodb-native提供egg.js的MongoDB驱动及API

    **Egg-mongo** 是一个专门为 **Egg.js** 框架设计的 MongoDB 驱动插件,它基于 **node-mongodb-native** 这个官方的 Node.js MongoDB 库,为 Egg.js 应用提供了高效且方便的 MongoDB 集成方案。通过 Egg-mongo,...

    node+mongodb 建站攻略(一期)代码

    Mongoose是Node.js中用来操作MongoDB的库,它提供了一种面向对象的方式来定义数据模型,简化了数据库操作。开发者在这里定义的模型,可以映射到MongoDB的集合,并且提供了丰富的查询、验证和类型转换功能。 `public...

    前端开源库-node-red-contrib-mongodb2

    `node-red-contrib-mongodb2` 库扩展了这一功能,使开发者能够利用 MongoDB 的强大功能,例如读取、写入、更新和删除数据库记录,以及执行复杂的查询操作。 **主要功能** 1. **连接管理**:库支持创建、管理和断开...

    Node学生管理系统(Express+MongoDB)

    本项目是一套基于Node.js的全面的学生管理系统,利用了Express框架和MongoDB数据库来实现对学生信息的增、删、改、查操作。这是一个典型的Web应用开发实例,适合初学者学习和理解Node.js在实际项目中的应用。 **一...

    node-mongodb-native.zip

    总之,`node-mongodb-native`是Node.js开发MongoDB应用的重要工具,其丰富的API和强大的功能使得开发者能够高效地进行数据库操作。熟练掌握`node-mongodb-native`,有助于提升Node.js应用程序的数据处理能力。在实际...

    koa-mongo_node+mongoDB实现登录_loadh2h_koamongo_MongoDB_

    `node_modules`目录包含了项目依赖的所有第三方模块,比如`mongoose`(用于连接MongoDB的Node.js驱动)和其他辅助工具。 4. **注册与登录实现**: 在`routers`目录下,开发者可能创建了对应的路由文件,比如`auth....

    Node + MongoDB 天气小站 快速建站指南 PPT

    Node.js与MongoDB是两种流行的开源技术,通常结合使用来构建高效的数据密集型实时应用程序。Node.js是一个基于Chrome V8引擎的JavaScript运行环境,实现了非阻塞I/O和事件驱动模型,适合处理高并发的网络请求。...

    Node.js+Express+MongoDB实现简单登录注册功能

    Express是Node.js中最流行的Web应用框架,而MongoDB则是一种流行的NoSQL数据库,特别适合处理JSON格式的数据。 **一、安装与配置** 首先,确保已经安装了Node.js。然后,在项目目录下,通过npm(Node.js包管理器)...

    node操作mongodb数据库的封装

    首先,我们看到标题提及的是“node操作mongodb数据库的封装”,这意味着我们要在Node.js应用中创建一个模块,用于包装对MongoDB的基本操作,如查询、插入、更新和删除等。这有助于代码的组织和复用,提高开发效率。 ...

    mongodb笔记,服务安装 CRUD语法,及node服务端操作MongoDB

    mongodb笔记,服务安装 CRUD语法,及node服务端操作MongoDB

    基于vue+node+mongodb开发的仿美团外卖点餐系统源码.zip

    基于vue+node+mongodb开发的仿美团外卖点餐系统源码.zip 【前端功能】 登录/注销 IP定位 搜索地址 后端获取商店(暂未实现计算当前位置和商店的距离) 加购物车 图片懒加载 路由懒加载 动态底部导航 【后台管理功能】 ...

    Node应用程序构建——使用MongoDB和Backbone

    在Node.js应用中,我们通常会使用Mongoose库来操作MongoDB。Mongoose提供了ORM(对象关系映射)功能,使得JavaScript对象可以直接映射到MongoDB的文档。通过定义Schema,我们可以轻松地进行数据验证和类型转换。 **...

    Node.js MongoDB AngularJSWeb开发.part2

    在本主题中,我们将深入探讨三个关键的技术领域:Node.js、MongoDB以及AngularJS,这些都是现代Web开发中的重要组成部分。这些技术的结合使得开发者能够构建高效、可扩展且功能丰富的Web应用程序。 首先,Node.js是...

    《Node应用程序构建:使用MongoDB和Backbone》 源码

    4. **Node.js与MongoDB的集成**:本书会讲解如何使用Node.js的MongoDB驱动程序(如`mongodb`或`mongoose`)来连接和操作数据库,包括数据的增删查改、集合管理、索引创建等。 5. **Express框架**:在Node.js中,...

    Vue2.0+Node.js+MongoDB全栈打造商城系统

    ### Vue2.0+Node.js+MongoDB全栈打造商城系统 #### 一、项目概述 在当前互联网技术快速发展的背景下,商城系统的构建已经成为企业信息化建设的重要组成部分之一。本项目旨在利用Vue2.0作为前端框架、Node.js作为...

    一个基于Node和原生MongoDB的微博系统

    3. **数据模型(Mongoose)**:在Node.js中操作MongoDB,通常会使用Mongoose库。它为MongoDB提供了强大的对象数据模型(ODM),简化了数据操作,同时提供了类型检查和验证功能。 4. **用户认证(Authentication)**:...

    node.js操作mongodb学习小结

    一、准备工作 1、在mongodb创建将要读取的表 创建数据库mongotest ...二、实例(node.js读取mongodb) 参考node-mongodb-native的文档:https://github.com/mongodb/node-mongodb-native 代码如下: var mongo

    NodeJs使用mongoose操作mongodb

    Mongoose是在node.js异步环境下对mongodb进行便捷操作的对象模型工具。 本资源代码配合博客使用:https://blog.csdn.net/qq_25479327/article/details/81148772 NodeJs使用mongoose操作mongodb

    Node.js-通过node-vue-MongoDB构建项目从构建到服务器部署

    在Node.js中,我们可以使用Mongoose这样的ODM(对象数据模型)库来操作MongoDB,方便地进行数据的CRUD操作。 在项目构建过程中,通常会遵循以下步骤: 1. 初始化项目:使用`vue create`命令创建Vue.js项目,安装...

Global site tag (gtag.js) - Google Analytics