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/
相关推荐
在本篇内容中,我们将深入探讨“前端 Vue+Node+MongoDB 高级全栈开发”的核心知识点。通过本文的学习,您将能够更好地理解如何利用这些技术构建高效、灵活且可扩展的应用程序。 ### 一、Vue.js简介 **Vue.js** 是...
**Egg-mongo** 是一个专门为 **Egg.js** 框架设计的 MongoDB 驱动插件,它基于 **node-mongodb-native** 这个官方的 Node.js MongoDB 库,为 Egg.js 应用提供了高效且方便的 MongoDB 集成方案。通过 Egg-mongo,...
Mongoose是Node.js中用来操作MongoDB的库,它提供了一种面向对象的方式来定义数据模型,简化了数据库操作。开发者在这里定义的模型,可以映射到MongoDB的集合,并且提供了丰富的查询、验证和类型转换功能。 `public...
`node-red-contrib-mongodb2` 库扩展了这一功能,使开发者能够利用 MongoDB 的强大功能,例如读取、写入、更新和删除数据库记录,以及执行复杂的查询操作。 **主要功能** 1. **连接管理**:库支持创建、管理和断开...
本项目是一套基于Node.js的全面的学生管理系统,利用了Express框架和MongoDB数据库来实现对学生信息的增、删、改、查操作。这是一个典型的Web应用开发实例,适合初学者学习和理解Node.js在实际项目中的应用。 **一...
总之,`node-mongodb-native`是Node.js开发MongoDB应用的重要工具,其丰富的API和强大的功能使得开发者能够高效地进行数据库操作。熟练掌握`node-mongodb-native`,有助于提升Node.js应用程序的数据处理能力。在实际...
`node_modules`目录包含了项目依赖的所有第三方模块,比如`mongoose`(用于连接MongoDB的Node.js驱动)和其他辅助工具。 4. **注册与登录实现**: 在`routers`目录下,开发者可能创建了对应的路由文件,比如`auth....
Node.js与MongoDB是两种流行的开源技术,通常结合使用来构建高效的数据密集型实时应用程序。Node.js是一个基于Chrome V8引擎的JavaScript运行环境,实现了非阻塞I/O和事件驱动模型,适合处理高并发的网络请求。...
Express是Node.js中最流行的Web应用框架,而MongoDB则是一种流行的NoSQL数据库,特别适合处理JSON格式的数据。 **一、安装与配置** 首先,确保已经安装了Node.js。然后,在项目目录下,通过npm(Node.js包管理器)...
首先,我们看到标题提及的是“node操作mongodb数据库的封装”,这意味着我们要在Node.js应用中创建一个模块,用于包装对MongoDB的基本操作,如查询、插入、更新和删除等。这有助于代码的组织和复用,提高开发效率。 ...
mongodb笔记,服务安装 CRUD语法,及node服务端操作MongoDB
基于vue+node+mongodb开发的仿美团外卖点餐系统源码.zip 【前端功能】 登录/注销 IP定位 搜索地址 后端获取商店(暂未实现计算当前位置和商店的距离) 加购物车 图片懒加载 路由懒加载 动态底部导航 【后台管理功能】 ...
在Node.js应用中,我们通常会使用Mongoose库来操作MongoDB。Mongoose提供了ORM(对象关系映射)功能,使得JavaScript对象可以直接映射到MongoDB的文档。通过定义Schema,我们可以轻松地进行数据验证和类型转换。 **...
在本主题中,我们将深入探讨三个关键的技术领域:Node.js、MongoDB以及AngularJS,这些都是现代Web开发中的重要组成部分。这些技术的结合使得开发者能够构建高效、可扩展且功能丰富的Web应用程序。 首先,Node.js是...
4. **Node.js与MongoDB的集成**:本书会讲解如何使用Node.js的MongoDB驱动程序(如`mongodb`或`mongoose`)来连接和操作数据库,包括数据的增删查改、集合管理、索引创建等。 5. **Express框架**:在Node.js中,...
### Vue2.0+Node.js+MongoDB全栈打造商城系统 #### 一、项目概述 在当前互联网技术快速发展的背景下,商城系统的构建已经成为企业信息化建设的重要组成部分之一。本项目旨在利用Vue2.0作为前端框架、Node.js作为...
3. **数据模型(Mongoose)**:在Node.js中操作MongoDB,通常会使用Mongoose库。它为MongoDB提供了强大的对象数据模型(ODM),简化了数据操作,同时提供了类型检查和验证功能。 4. **用户认证(Authentication)**:...
一、准备工作 1、在mongodb创建将要读取的表 创建数据库mongotest ...二、实例(node.js读取mongodb) 参考node-mongodb-native的文档:https://github.com/mongodb/node-mongodb-native 代码如下: var mongo
Mongoose是在node.js异步环境下对mongodb进行便捷操作的对象模型工具。 本资源代码配合博客使用:https://blog.csdn.net/qq_25479327/article/details/81148772 NodeJs使用mongoose操作mongodb
在Node.js中,我们可以使用Mongoose这样的ODM(对象数据模型)库来操作MongoDB,方便地进行数据的CRUD操作。 在项目构建过程中,通常会遵循以下步骤: 1. 初始化项目:使用`vue create`命令创建Vue.js项目,安装...