vue+express+mongodb 实现 增删改查
一、创建一个vue项目
用脚手架vue-cli搭建一个项目,数据请求用axios方式,写几个按钮用来调接口(vue这块不做多解释,不懂的可以先去官网学习vue-cli:https://cli.vuejs.org/zh/guide/cli-service.html axios:http://www.axios-js.com/)
注意点:在用axios调用接口的时候会产生跨域,所以有配置下:在vue项目根目录下打开config文件夹下的index.js文件中proxyTable中加入配置内容
proxyTable: {
'/api':{
target:'http://localhost:3000',
changeOrigin:true,
}
},
这里我服务器开的是3000端口,而vue默认是8080端口

二、express接口
1、新创建一个文件夹,用于放服务端代码,这里文件夹名字一mongodb为例
在根目录下打开命令窗口(默认都安装了node)npm init -y 初始化,然后下载依赖包
express模块用来创建路由
mongoose模块用来创建数据库,连接数据库
body-parser模块用来对post请求的请求体进行解析
npm install express body-parser mongoose --save
2、在根目录下创建app.js文件,用来启动express服务
//app.js文件 //引入刚才定义的hero路由
const hero = require('./router/hero')
//1.引入express模块
const express = require('express') //中间介 解析post ,get 登返回的数据
var bodyParser = require('body-parser'); //2.创建app对象
const app = express()
app.use(bodyParser());
app.use('/api',hero)
//定义简单路由
app.use('/',(req,res) => {
res.send('成功')
})
//定义服务启动端口
app.listen(3000,() => {
console.log('服务器开启成功,端口3000')
})
在根目录下打开命令窗口输入node app 执行后打印“服务器开启成功,端口号3000”,这代表服务器已开启,浏览器访问 http://localhost:3000/ 页面会显示 :成功
3、创建数据模型
在项目根目录建立一个models文件夹,用来存储数据模型,每个模型都是由一个Schema生产,具体的我们不用太在意,如果有兴趣可自行百度。
在models文件夹中创建一个hero.js文件,内容如下
//hero.js文件 //引入mongoose模块
const mongoose = require('mongoose') //定义数据模型,可以看到,我们下面创建了一个表,表中的数据有name、age、sex等字段,并且这些字段的数据类型也定义了,最后将model导出即可
const heroSchema = mongoose.Schema({
name :String,
age : String,
sex : String,
address : String,
dowhat : String,
imgArr:[],
favourite:String,
explain:String
}, { collection: 'myhero'})
//这里mongoose.Schema最好要写上第二个参数,明确指定到数据库中的哪个表取数据,我这里写了myhreo,目的就是为了以后操作数据要去myhreo表中。
// 这里不写第二个参数的话,后面你会遇到坑。 //导出model模块
const Hero = module.exports = mongoose.model('hero',heroSchema);
4、创建exress增删改查 业务代码
在项目根目录创建一个router文件夹,文件夹中创建一个hero.js文件,内容如下,分别为增删改查、添加图片等路由 ,在逻辑代码中药注意在这里插入了一下内容用来连接mongodb数据库。
// 连接数据库
mongoose.connect("mongodb://localhost:27017/test", { useNewUrlParser: true });
const conn = mongoose.connection;
conn.on("error", () => console.error("连接数据库失败"));
//引入express模块
const express = require("express");
//定义路由级中间件
const router = express.Router();
//引入数据模型模块
const Hero = require("../models/hero"); // mongoose.js
const mongoose = require("mongoose"); // 连接数据库
mongoose.connect("mongodb://localhost:27017/test", { useNewUrlParser: true });
const conn = mongoose.connection;
conn.on("error", () => console.error("连接数据库失败")); // 查询所有英雄信息路由
router.get("/hero", (req, res) => {
Hero.find({})
.sort({ update_at: -1 })
.then(heros => { res.json(heros);
})
.catch(err => { res.json(err);
});
}); router.get("/user", (req, res) => {
res.end("来啦");
}); // 通过ObjectId查询单个英雄信息路由
router.get("/hero/:id", (req, res) => {
Hero.findById(req.params.id)
.then(hero => {
res.json(hero);
})
.catch(err => {
res.json(err);
});
}); // 添加一个英雄信息路由
router.post("/hero", (req, res) => {
//使用Hero model上的create方法储存数据 Hero.create(req.body, (err, hero) => { if (err) {
res.json(err);
} else {
console.log('1');
res.json(hero);
}
}); }); //更新一条英雄信息数据路由
router.put("/hero/:id", (req, res) => {
Hero.findOneAndUpdate(
{ _id: req.params.id },
{
$set: {
name: req.body.name,
age: req.body.age,
sex: req.body.sex,
address: req.body.address,
dowhat: req.body.dowhat,
favourite: req.body.favourite,
explain: req.body.explain
}
},
{
new: true
}
)
.then(hero => res.json(hero))
.catch(err => res.json(err));
}); // 添加图片路由
router.put("/addpic/:id", (req, res) => {
Hero.findOneAndUpdate(
{ _id: req.params.id },
{
$push: {
imgArr: req.body.url
}
},
{
new: true
}
)
.then(hero => res.json(hero))
.catch(err => res.json(err));
}); //删除一条英雄信息路由
router.delete("/hero/:id", (req, res) => {
console.log(req.params.id);
Hero.findOneAndRemove({
_id: req.params.id
})
.then(hero => res.send(`${hero.title}删除成功`))
.catch(err => res.json(err));
}); module.exports = router;
这个文件会在app.js中引入,上面app.js中代码已引入
三、mongodb数据持久化
为了方便我们查询和观看效果,可以先在数据库中插入一条数据
1、下载 mongodb https://www.mongodb.com/download-center/community 具体安装可以自行去百度,这里不做解释
2、下载mongo可视化工具 https://studio3t.com/download/ 数据库客户端,可以方便的操作数据库
3、开启数据库:在安装目录下 执行命令mongod -dbpath "自己的安装目录/data"
4、在安装目录下的lib中执行命令 mongo
show dbs 查看数据库
use test 创建数据库
db.myhero.insert({
//根据创建的数据模型 插入的数据
//myhero是一个集合
})
插入数据后年可以在studio3t中直接查看 。
更多的数据库操作命令可以百度去查,这里不做过多扩展。
四、执行程序
开启数据库=》开启服务器=》开启vue项目
可以在vue页面调用接口操作数据了
===========================================================================
结束 大家有好的见解可以提出来,不懂的地方可以提问,谢谢!
vue+express+mongodb 实现 增删改查的更多相关文章
- express+mongodb+mongoose增删改查
增加 修改 删除 数据库 这是一个前后端分离的项目前端项目地址:https://gitee.com/dingshao/express_qd.git后端项目地址:https://gitee.com/di ...
- mongodb 数据库 增删改查
mongodb 数据库 增删改查 增: // 引入express 模块 var express = require('express'); // 路由var router = expr ...
- Java连接MongoDB进行增删改查
1.导入必须的包: 详情看项目:http://pan.baidu.com/s/1cvDAOY 2.通过Myeclipse创建WEB项目 3. 3.bean:创建实体类 package com.bean ...
- MongoDB的增删改查 转
MongoDB的增删改查 (黎明你好原创作品,转载请注明) MongoDB中数据的基本单元叫做文档,采用json的键-值的方式.多个键及其关联的值有序的存放在一起变是文档.类似于编程语言中的键值关系. ...
- Java实现mongodb原生增删改查语句
Java实现mongodb原生增删改查语句 2018-03-16 自动化测试时,需校验数据库数据,为了快速自动化,在代码中用原生增删改查语句操作mongodb 结构 代码 0 pom.xml < ...
- Scala对MongoDB的增删改查操作
=========================================== 原文链接: Scala对MongoDB的增删改查操作 转载请注明出处! ==================== ...
- C# 对MongoDB 进行增删改查的简单操作
C# 对MongoDB 进行增删改查的简单操作 下面演示下C#操作MongoDB驱动的简单的增删改查代码 运用到的MongoDB支持的C#驱动,当前版本为1.6.0 1,连接数据库 /// & ...
- python操作三大主流数据库(8)python操作mongodb数据库②python使用pymongo操作mongodb的增删改查
python操作mongodb数据库②python使用pymongo操作mongodb的增删改查 文档http://api.mongodb.com/python/current/api/index.h ...
- python 全栈开发,Day124(MongoDB初识,增删改查操作,数据类型,$关键字以及$修改器,"$"的奇妙用法,Array Object 的特殊操作,选取跳过排序,客户端操作)
一.MongoDB初识 什么是MongoDB MongoDB 是一个基于分布式文件存储的数据库.由 C++ 语言编写.旨在为 WEB 应用提供可扩展的高性能数据存储解决方案. MongoDB 是一个介 ...
随机推荐
- sql01
1.简介 2.外键 1)主键: 3.表间关联与外键 上面的两个表格通过厂家编号联系在一起,彼此相对独立.厂家编号就称为外键.厂家编号是厂家表的主键. 4.SQL 1)数据库登录 服务器名称选择:①机器 ...
- nor flash之4字节地址模式
背景 容量低于 16M bytes 的 nor,一般使用 3 字节地址模式,即命令格式是 cmd + addr[2] + addr[1] + addr[0] + ... 使用超过 16M bytes ...
- 运维介绍以及虚拟机,centos安装
运维的职责 1.企业的数据安全 2.网站7*24小时运行 3.企业服务好 服务器 服务器尺寸: 高度为单位:U(unit)1U=1.75英寸=4.45cm 服务器的分类: 机架式服务器 刀片式服务器 ...
- 解析Laravel框架下的Contracts契约
Contracts Laravel 的契约是一组定义框架提供的核心服务的接口, 例如我们在介绍用户认证的章节中到的用户看守器契约IllumninateContractsAuthGuard 和用户提供器 ...
- JVM笔记-运行时内存区域划分
1. 概述 Java 虚拟机在执行 Java 程序的过程中会把它管理的内存划分为若干个不同的数据区域.它们各有用途,有些随着虚拟机进程的启动一直存在(堆.方法区),有些则随着用户线程的启动和结束而建立 ...
- anconda添加镜像源
# anaconda 安装镜像源 *** 在使用安装 conda 安装某些包会出现慢或安装失败问题,最有效方法是修改镜 像源为国内镜像源. 之前都选用清华镜像源,但是2019年 ...
- 基于 HTML + WebGL 结合 23D 的疫情地图实时大屏 PC 版【转载】
前言 2019年12月以来,湖北省武汉市陆续发现了多例肺炎病例,现已证实为一种新型冠状病毒感染引起的急性呼吸道传染病并蔓延全国,肺炎疫情牵动人心,人们每天起来第一件事变成了关注疫情进展,期望这场天灾早 ...
- CentOS7使用tar.gz方法安装php7.2.8
软件:VMware 系统版本:CentOS7 1.检查系统里是否有安装的PHP包,如果有的话先删除 [root@localhost ~]# yum list installed | grep php ...
- Asp.net Repeater控件的绑定与操作
由于repeater 控件具有的一个特性--循环 <ItemTemplate>的内容,Repeater 控件里的某个元素对象的绑定与获取,不像平常的,直接使用控件的 id 便可以给该控件进 ...
- centos下配置Nginx
首先NGINX是一个高效的HTTP和反向代理的服务器,这里记录一下它的安装方式和文件结构方便以后查看.同时Linux系统具有灵活性,其他的东西可查看具体的官网信息:https://nginx.org/ ...