前言:最近学习vue和react的高阶项目,都需要和Nodejs+Express+MongoDB结合实现全栈开发。这里结合实例Demo和所学项目集中总结一下这部分服务端的基础知识。


一、Express+mongodb开发web后台接口Demo

Express开发web接口

  • Express:基于nodejs,快速、开放、极简的web开发框架  【官网
  • 安装express

    npm install express --save
    
  • 新建server目录:server.js编写后端代码
    const express = require('express');
    
    //新建app模块
    const app = express() app.get('/', function(req, res){
    res.send('<h1>Hello world</h1>') //发送Html
    }) app.get('/data', function(req, res){
    res.json({name:'imooc React App',type:'IT'}) //发送json
    }) app.listen(9093, function(){ //自定义监听端口
    console.log('Node app start at port 9093')
    })

  • 查看调试页面:浏览器访问localhost:9093(每次更新server配置后必须重新启动)

  • 监听路由和响应内容,使用nodemon自动重启

    npm install -g nodemon

    启动应用: nodemon server.js 

  • 其它特性
  1. app.get、app.post分别开发get和post接口
  2. app.use使用模块
  3. res.send、res.json、res.sendfile响应不同的内容(分别返回Html文本、JSON、文件)

    Mongodb:非关系型数据库

  • 启动服务:net start MongoDB
  • 关闭服务:net stop MongoDB
  • 安装mongoose

    npm install mongoose --save
  • 通过mongoose操作mongodb存储的就是json,相当于mysql来说,要容易的多  

    Mongoose基础使用

  • Connect连接数据库

    const mongoose = require('mongoose')
    //链接mongo 并且使用react这个集合
    const DB_URL = 'mongodb://127.0.0.1:27017/imooc' //前提:开启Mongodb服务
    mongoose.connect(DB_URL)
    mongoose.connection.on('connected', function(){
    console.log('mongo connect success')
    })
  • 定义文档模型,Schema和model新建模型
  • Mongoose重要概念
  1. Schema: 一种以文件形式存储的数据库模型骨架,不具备数据库的操作能力
  2. Model: 由Schema发布生成的模型,具有抽象属性和行为的数据库操作对
  3. Entity: 由Model创建的实体,它的操作也会影响数据库
  • Schema→Model→Entity的关系
  1. Schema生成Model
  2. Model创造Entity
  3. Model和Entity都可对数据库操作造成影响,但Model比Entity更具操作性

    Mongoose文档类型

  • String, Number等数据结构

    //类似于mysql的表 mongo里有文档、字段的概念
    const User = mongoose.model('user', new mongoose.Schema({
    user: {type:String, require:true},
    age: {type:Number, require:true}
    }))
  • 定create、remove、update分别用来增、删、改的操作
  1. 新增数据

    //新增数据
    User.create({
    user: 'xiaohong',
    age: 10
    }, function(err, doc){
    if(!err){
    console.log(doc)
    }else{
    console.log(err)
    }
    }) app.get('/data', function(req, res){
    //查询User全部数据
    User.find({}, function(err, doc){
    res.json(doc)
    })
    })

      

  2. 删除数据
    //删除数据
    User.remove({age:10},function(err, doc){
    console.log(doc)
    })

  3. 更新数据
    //更新数据
    User.update({'user':'xiaoming'},{'$set':{age: 26}}, function(err, doc){
    console.log(doc)
    })

  • find和findOne用来查询数据
  1. find:查找到的是数组,其中可包含多条数据对象

    //查询数据
    User.find({age:18}, function(err, doc){
    res.json(doc)
    })

  2. findOne:查找到的是数据对象本身

    //查询数据
    User.findOne({user:'xiaoming'}, function(err, doc){
    res.json(doc)
    })

    Demo实例代码

/**
* express Demo
*/
const express = require('express');
const mongoose = require('mongoose') //链接mongo 并且使用react这个集合
const DB_URL = 'mongodb://127.0.0.1:27017/imooc'
mongoose.connect(DB_URL)
mongoose.connection.on('connected', function(){
console.log('mongo connect success')
}) //类似于mysql的表 mongo里有文档、字段的概念
const User = mongoose.model('user', new mongoose.Schema({
user: {type:String, require:true},
age: {type:Number, require:true}
})) // 新增数据
// User.create({
// user: 'xiaolan',
// age: 18
// }, function(err, doc){
// if(!err){
// console.log(doc)
// }else{
// console.log(err)
// }
// }) //删除数据
// User.remove({user: 'xiaolan'},function(err, doc){
// console.log(doc)
// }) //更新数据
// User.update({'user':'xiaoming'},{'$set':{age: 26}}, function(err, doc){
// console.log(doc)
// }) //新建app模块
const app = express() app.get('/', function(req, res){
res.send('<h1>Hello world</h1>') //发送Html
}) app.get('/data', function(req, res){
//查询数据
User.find({}, function(err, doc){
res.json(doc)
})
// res.json({name:'imooc React App',type:'IT'}) //发送json
}) app.listen(9093, function(){
console.log('Node app start at port 9093')
})

二、Express和mongodb结合  

1、mongodb独立工具函数

2、express使用body-parser支持post参数

3、使用cookie-parser存储登录信息cookie


注:转载请注明出处

【重点突破】—— Nodejs+Express+MongoDB的使用基础的更多相关文章

  1. NodeJS+Express+MongoDB

    一.MongoDB MongoDB是开源,高性能的NoSQL数据库:支持索引.集群.复制和故障转移.各种语言的驱动程序丰富:高伸缩性:MongoDB 是一个基于分布式文件存储的数据库.由 C++ 语言 ...

  2. nodejs+express+mongodb实现登录注册

    nodejs+express+mongodb实现登录注册 1 简介 登录注册功能使用nodejs+express+mongodb完成,其中对mongodb的操作使用mongoose完成,对mongod ...

  3. NodeJS+Express+MongoDB 简单实现数据录入及回显展示【适合新人刚接触学习】

    近期在看NodeJS相关 不得不说NodeJS+Express 进行网站开发是很不错,对于喜欢玩JS的来说真是很好的一种Web开发组合 在接触NodeJS时受平时Java或者C#中API接口等开发的思 ...

  4. nodejs+express+mongodb简单的例子

    简单的介绍下node+express+mongodb这三个东西.node:是运行在服务器端的程序语言,表面上看过去就是javascript一样的东西,但是呢,确实就是服务器语言,个人觉得在一定层次上比 ...

  5. 从无到有,用Nodejs+express+mongodb搭建简易登陆系统

    前端处理server表示很蛋疼,初学Node,虽然感觉异常强大,但是学起来还是有些吃力的,Node是工具,它不是万能的,搭建一个系统还是需要借助其他一些工具,对于我这个没怎么接触server的前端来说 ...

  6. Nodejs&express+mongodb完成简单用户登录(即Nodejs入门)

    刚了解nodejs,发现nodejs配置起来不复杂,但也有很多需要注意的地方,今天就记录一下,以后也可拿出来看看. 要完成这个简单的示例,从零开始,走三步就行了. 一.搭建开发环境 二.创建项目(ex ...

  7. nodeJs express mongodb 建站(mac 版)

    基本环境 homebrew.node.npm.express.mongodb 1.node .npm : (1)辅助工具:homebrew安装(mac下一个软件管理工具,相当于Red hat的yum, ...

  8. nodeJs express mongodb 建站(window 10 版)

    一.环境搭建 安装 node.git.npm.express.mongodb.主要介绍express.mongodb 的安装. (1)node安装:https://nodejs.org/en/down ...

  9. nodejs+express+mongodb 快速接口开发

    nodejs+mongodb+express API快速生成 使用说明 安装 $ npm install duzq-quick-mongo 建立mongodb数据模型 const mongoose = ...

随机推荐

  1. 2.1 Python3.5安装以及爬虫需要的环境配置

    之所以选用Python,是因为对于网络爬虫来说,Python是最好上手的一种语言.本文讲述的安装配置都是基于Windows的环境. 另外我想说的是,文中用到的下载链接尽量官方网站上的下载链接,这是我比 ...

  2. AGC019-E Shuffle and Swap

    给定两个长度为\(n\le 10^5\)的\(01\)串 \(A, B\), 满足 \(1\) 的数量相等 求通过下列方式将\(A\)变成\(B\)的概率 (mod意义下) 构造序列\(a,b\). ...

  3. 大工程(bzoj 3611)

    Description 国家有一个大工程,要给一个非常大的交通网络里建一些新的通道.  我们这个国家位置非常特殊,可以看成是一个单位边权的树,城市位于顶点上.  在 2 个国家 a,b 之间建一条新通 ...

  4. Application binary interface and method of interfacing binary application program to digital computer

    An application binary interface includes linkage structures for interfacing a binary application pro ...

  5. Linux平台用C++实现事件对象,同步线程

    前文在Win32平台上用C++实现了事件对象Event,对线程进行同步,以达到期望目的.这次在Linux平台上实现与之类似的事件对象.与其相关的一组API包括:pthread_mutex_init,p ...

  6. springMVC 配置中易犯的小错误

    搭建springMVC环境时有可能遇到:'警告: No mapping found for HTTP request with URI [/WEB-INF/pages/helloWorld.jsp] ...

  7. 安卓SDK安装时出现的小问题

    在SDK Manager启动安装后出现网页不能访问的错误 错误日志如下 Fetching URL: https://dl-ssl.google.com/android/repository/repos ...

  8. mysql运维必会的一些知识点整理(转自民工哥)

    (1)基础笔试命令考察 1.开启MySQL服务 /etc/init.d/mysqld start service mysqld start systemctl start mysqld 2.检测端口是 ...

  9. js-限制参与活动的范围(微信H5活动)

    近期接到大连某个项目,一个H5的活动,其中有一个需求就是:这个活动的参与者仅限大连地区的用户 所以参考了微信API 得出的操作结果为: wx.ready(function() { wx.getLoca ...

  10. Python的扩展接口[2] -> 动态链接库DLL[1] -> 组件对象模型 COM 的 Python 调用

    组件对象模型 COM 的 Python 调用 关于COM的基本概念,可参考组件对象模型 COM的内容,下面主要介绍两种使用 Python 调用 COM 组件的方法. 1 使用 win32com 1.1 ...