node + express + mongodb 手动配置
首先创建一个文件夹,在文件夹中创建一个以js为后缀的主文件列如app.js
下载express框架和mongoose模块用来操作mongodb数据库
npm i express --save
npm i mongoose --save
在app.js文件中;
第一步、引入express然后引入bodyParser模块是用来解析客户端数据
第二步、创建express应用
第三步、引入需要的路由文件(类似于Django的class类视图,有几个视图创建几个路由文件)
第四步、设置跨域访问,代码如下:
跨域代码:
//设置跨域访问
app.all("*", function (req, res, next) {//设置允许跨域的域名,*代表允许任意域名跨域res.header("Access-Control-Allow-Origin", req.headers.origin || '*');// //允许的header类型res.header("Access-Control-Allow-Headers", "Content-Type, Authorization, X-Requested-With");// //跨域允许的请求方式 res.header("Access-Control-Allow-Methods", "PUT,POST,GET,DELETE,OPTIONS");// 可以带cookiesres.header("Access-Control-Allow-Credentials", true);if (req.method == 'OPTIONS') {res.sendStatus(200);} else {next();}
})
第五步、解析post数据,代码如下:
app.use(bodyParser.urlencoded({ extends: false }))
app.use(bodyParser.json())
app为应用名
第六步、把引入的路由放到use中间件上为路由对象匹配请求路径,列如,代码如下:
app.use('/list',ls)
list为一级路由,ls是引入的路由模块
第七步、配置运行项目端口号,代码如下:
app.listen(3000,()=>{console.log('服务器启动成功');
})
端口号为3000
app.js全部代码如下:
const express=require("express")//引入express
const bodyParser = require('body-parser')//解析客户端数据
require("./sjk")//引入数据库
const app=express()//创建应用
const ls = require('./router')//引入路由//设置跨域访问
app.all("*", function (req, res, next) {//设置允许跨域的域名,*代表允许任意域名跨域res.header("Access-Control-Allow-Origin", req.headers.origin || '*');// //允许的header类型res.header("Access-Control-Allow-Headers", "Content-Type, Authorization, X-Requested-With");// //跨域允许的请求方式 res.header("Access-Control-Allow-Methods", "PUT,POST,GET,DELETE,OPTIONS");// 可以带cookiesres.header("Access-Control-Allow-Credentials", true);if (req.method == 'OPTIONS') {res.sendStatus(200);} else {next();}
})app.use(bodyParser.urlencoded({ extends: false }))
app.use(bodyParser.json())app.use('/list',ls)//运行项目端口号
app.listen(3000,()=>{console.log('服务器启动成功');
})
然后数据库的文件夹里面创建连接数据表文件,列如database.js
在database.js文件中;
第一步、引入mongoose模块
第二步、连接数据库,代码如下:
mongoose.connect("mongodb://127.0.0.1/list").then(()=>{console.log('数据库连接成功')
})
127.0.0.1为数据库地址list为数据库表名
再创建数据表模型的文件(类似于Django的models文件,但是是一个模型创建一个文件)例如创建一个list.js文件
在list.js文件中;
第一步、引入mongose模块
第二步、创建表字段
第三步、把数据表向外暴露
list.js全部代码:
const mongoose = require("mongoose")//引入mongoose//创建数据表
const list=new mongoose.Schema({//表字段photo:{type:String},name:{type:String},ower:{type:String},jianjie:{type:String}
})//把数据表向外暴露
module.exports=mongoose.model("list",list)
创建一个文件夹放配置路由文件在路由文件里面写逻辑代码从前端获取数据和返回数据给前端,(类似于Django的view文件中的类视图)例如文件名为router.js。
第一步、引入express
第二步、创建路由对象
第三步、引入数据库文件,对数据库进行增删改查
第四步、写路由请求方式、逻辑代码
第五步、导出路由
router.js全部代码:
const express = require("express")//引入express
const router = express.Router()//创建路由对象
const ls = require("./list")//引入数据库//请求方式 路由
//req为请求 res为响应
router.get("/ll",(req,res)=>{//逻辑代码var obj={photo:'成功'}res.json({obj})//返回数据
})//导出路由
module.exports=router
mongoose模块的增删改查方法合集:
// 创建文档(构造函数)
const peopleList = new PeopleList({name: '姓名',age: '年龄',school:'学校'
})
// 将文档插入到数据
peopleList.save() // 查询用户集合中所有文档 可以根据条件查询
PeopleList.find().then(result=> console.log(result))
// 通过_id字段查找文档 会返回一个数组
PeopleList.find({_id:'6152d78d2950e0effd966971'}).then(result=>console.log(result))// findOne返回一条文档 是对象格式
PeopleList.findOne({name:'李逵'}).then(result=>console.log(result))// $gt大于 $lt小于
PeopleList.find({ age: { $gt: 16, $lt: 25 } }).then(result => console.log(result))
// $in包含
PeopleList.find({ name:{$in:'张飞'}}).then(result=>console.log(result))
// 选择要查询的字段
PeopleList.find().select('name').then(result=>console.log(result))// 对查询出来的字段进行排序 sort升序 -sort降序
PeopleList.find().sort('age').then(result=>console.log(result))
// skip跳过多少数据 limit限制查询数量
PeopleList.find().skip(1).limit(2).then(result => { console.log(result)})// 查找一条文档并删除
PeopleList.findOneAndDelete({ _id: '6152d94cda9b9bf65c544a97' }).then(result => console.log(result))
// 删除多个文档
PeopleList.deleteMany({}).then(result => console.log(result))// 更新文档
PeopleList.updateOne({ name: '李逵' }, {name:'高俅'}).then(result=>console.log(result))
PeopleList.update({ _id: '6152d9f3e65fededb3f8dc0b' }, { age: 33 }).then(result => console.log(result))
// 更新多个文档
PeopleList.updateMany({}, {school:'振涛教育'}).then(result=>console.log(result))
李逵' }, {name:'高俅'}).then(result=>console.log(result))
PeopleList.update({ _id: '6152d9f3e65fededb3f8dc0b' }, { age: 33 }).then(result => console.log(result))
// 更新多个文档
PeopleList.updateMany({}, {school:'振涛教育'}).then(result=>console.log(result))
node + express + mongodb 手动配置相关推荐
- node+express+mongodb初体验
从去年11月份到现在,一直想去学习nodejs,在这段时间体验了gulp.grunt.yeomen,fis,但是对于nodejs深入的去学习,去开发项目总是断断续续. 今天花了一天的时间,去了解整理整 ...
- 【HAVENT原创】Node Express API 通用配置
为什么80%的码农都做不了架构师?>>> ( 基于 Express 4.x ) 启动文件 /app.js: var express = require('express'); ...
- 微信扫码关注登录(vue+node+express+mongodb)
微信扫码关注登录(vue+node+express+mongodb) 文章目录 前言 一.微信扫码关注登录是什么? 二.为什么要使用微信扫码关注登录? 三.思路 前端部分 后端部分: 四.微信后台 授 ...
- node+express+MongoDB实现小商城服务端
GitHub地址 前端地址:github.com/FZliweilian- 服务端地址:github.com/FZliweilian- 运行环境 CentOS 7.3 node 8.11.0 npm ...
- nodejs+express+mongodb简单的例子
简单的介绍下node+express+mongodb这三个东西. node:是运行在服务器端的程序语言,表面上看过去就是javascript一样的东西,但是呢,确实就是服务器语言,个人觉得在一定层次上 ...
- Node.js Express+Mongodb 项目实战
Node.js Express+Mongodb 项目实战 这是一个简单的商品管理系统的小项目,包含的功能还算挺全的,项目涵盖了登录.注册,图片上传以及对商品进行增.删.查.改等操作,对于新手来说是个很 ...
- Node.js学生管理系统(Express+MongoDB)
这次的案例,数据持久化,用的MongoDB 如果想看用其他数据持久化案例(如MySQL数据库),可以点击 Node学生管理案例 目录 一.完成功能:实现对"学生信息"的增删改查. ...
- nodejs实战《一起学 Node.js》 使用 Express + MongoDB 搭建多人博客
GitHub: https://github.com/nswbmw/N-blog N-blog 使用 Express + MongoDB 搭建多人博客 开发环境 Node.js: 6.9.1 Mong ...
- 网站开发(一)Node.Js 安装和配置及express配置
目录 @[TOC](目录) 一.Node.js的下载和安装 1 下载 2 安装 3 检查是否安装成功 二.环境配置 1 node和npm环境配置 2 配置全局模块的存放路径以及cache的路径 三.安 ...
最新文章
- 紧急求助!配置SMTP插件出错,SMTP connect() failed
- 解决 aka com.chaozh.iReader:style/Theme.AppCompat.Light.NoActionBar) not found.
- 【Paper】2019_Bearing-only circumnavigation control of the multi-agent system around a moving target
- 前端学习(2000)vue之电商管理系统电商系统之绘制基本面板的结构
- 关于JVM的几个问题
- 停止做这7件事,你的工作效率至少翻一倍!
- 【洛谷P1282】多米诺骨牌
- Ubuntu安装php
- 互联网晚报 | 06月14日 星期二 | 罗永浩称苹果有些产品明显退步;​旷视首席科学家孙剑博士去世;吉利拟收购魅族...
- 陕西中医药有计算机系吗,校内制度 - 陕西中医药大学信息化建设管理处
- Datawhale组队学习周报(第034周)
- kubernetes日志架构PLG(promtail+loki+grafana)
- ati自定义分辨率_真三7:猛将传自定义分辨率图文教程
- vs code c语言安装视频,vscode怎样安装c语言环境
- ISO认证是什么?| ISO体系认证办理
- 有瓶颈设备的多级生产计划问题
- 2019上交CS考研经验贴
- 家电空调手机行业序列号追溯溯源管理,汉码PDA扫码入库出库
- 数独游戏技巧从入门到精通_从入门到精通八讲 | 高效氮化镓电源设计第六讲—EMC优化和整改技巧...
- java计算机毕业设计基于springboot+vue+elementUI的旅游网站(源码+数据库+Lw文档)
热门文章
- 导致UPS蓄电池损坏的原因有哪些?
- 数据中心继续蓬勃发展的5个原因
- 451 Research发布《2019年数据中心服务和基础设施预测》
- python资源百度云_Python Selenium 百度云分享链接资源 批量保存
- Interview:算法岗位面试—10.17早上—上海某科技公司算法岗位(偏算法,独角兽)非技术面试之比赛项目讲解和项目意义的探讨
- 成功解决ForkingPickler(file, protocol).dump(obj) TypeError: can‘t pickle Environment objects
- 成功解决AttributeError: 'map' object has no attribute 'items'
- 成功解决PermissionError(权限拒绝解决答案集锦): [Errno 13] Permission denied: ‘f:\\program files\\python\\python36\
- docker 如何删除<none>镜像
- js Array.prototype.slice.call(arguments,0) 理解