前端后端交互之MongoDB数据库+模板引擎


数据库及坏境搭建

使用数据库原因

  • 动态网站中的数据都是存储在数据库中
  • 数据库可以持久存储客户端通过表单收集的用户信息;
  • 数据库软件本身就可以对数据高效管理;

什么是数据库

存储数据的仓库,将数据有序分门别类的存储,通过API操作
常见数据库软件又:mysql mongoDB oracle
在这里插入图片描述
MongoDB数据库下载安装
MongoDB菜鸟教程
MongoDB官方学习网站
安装MongoDB Compass可视化软件
在这里插入图片描述

数据库相关概念

在这里插入图片描述
集合就是类别的意思,集合中又可以有多个文档,在这个文档里面又又很多属性;
Mongoose第三方包

开启mongodb

因为权限问题需要以管理员身份运行powershell
在这里插入图片描述

数据库连接

使用mongoose提供的connect方法即可连接数据库;
84
对使用mongoose使用时遇到的问题
在这里插入图片描述
解决方法:

const mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/playground', {
   
        useNewUrlParser: true,
        useUnifiedTopology: true
    })
    .then(() => {
    console.log('数据库连接成功') })
    .catch(err => console.log('数据库连接失败'))
  1. 创建数据库,在MongoDB中不需要显示创建数据库,如果正在使用的数据库不存在,MongoDB会自动创建;

MongoDB增删改查操作

1. 创建集合
如何创建集合呢?插入的文档一定要属于一个类别;
创建集合分为两步:一是对集合设定规则,而是创建集合,创建mongoose.Schema构造函数的实例即可创建集合;
前面讲了集合就相当于JavaScript里面的数组;创建集合并应用规则;
创建Schema构造函数的实例对象
创建集合规则

const courseSchema = new mongoose.Schema({
   
    name: String,
    author: String,
    isPublished: Boolean
});

使用规则创建集合,下面代码中的Course就是集合的构造函数

const Course = mongoose.model('Course', courseSchema) //courses

2. 创建文档

连接数据库应该在compass中看到数据,所以需要向集合中插入数据即创建文档分为两步:

  • 创建集合实例
  • 调用实例对象下的save方法将数据保存到数据库中
    代码示例,下列代码执行完之后刷新一下compass便可以在compass中看到数据库playground(自己定义的)
//Course是集合的构造函数
const course = new Course({
   
    name: 'node.js基础',
    author: '黑马',
    isPublished: true
});
course.save();//将文档插入到数据库中

数据库界面
在这里插入图片描述
第二种创建文档的方式
利用Course构造函数下面的方法create,creat里面有回调函数证明是异步API,实际上在数据库操作中都是异步API;

Course.create({
    name: 'JavaScript', author: '黑马2', isPublished: false }, (err, result) => {
   
    console.log(err);
    console.log(result);
})

上面代码还可以写为另外一种形式,使用promise的方法 then catch不适用回调函数
上面代码结果
在这里插入图片描述
3. mongoDB数据库导入数据
首先需要在MongoDB安装目录找到安装路径bin文件里面但是在我的bin目录下没有mongoimport.exe这个文件,所以呢,参考文档
mongoimport -d 数据库名称 -c 集合名称 --file 要导入的数据文件
这要去powerShell下执行,我在VSCode提供的终端调试工具下执行任然会报错
在这里插入图片描述
在compass中可以看到新增加的数据user
在这里插入图片描述
4. 查询文档
find里面没有参数则查询用户集合中的所有文档
代码示例

User.find().then(result => console.log(result));

find可以根据id值去查找:
代码示例

User.find({
    _id: '5c09f267aeb04b22f8460968' }).then(result => console.log(result))

上面代码执行结果
在这里插入图片描述
通过find查询的文档返回都是以数组形式;
findOne默认返回一条数据
代码示例

User.findOne().then(result => console.log(result))
//User.findOne({ name: '李四' }).then(result =>
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值