node 第二十五天 基于 node 的 mongodb 数据库驱动程序 mongoose

2024-02-24 10:44

本文主要是介绍node 第二十五天 基于 node 的 mongodb 数据库驱动程序 mongoose,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

  1. 什么是mongoose

    MongoDB object modeling designed to work in an asynchronous environment.
    MongoDB对象建模设计用于在异步环境中工作。

    其实就是基于Node/Deno 的数据库驱动程序, 一句话类比就是:
    Navicat是基于windows/macOS/Linux 操作系统环境 操作mongodb数据库的 程序
    mongoose是基于 node/deno 异步JavaScript环境 操作mongodb数据库的 程序
    两者都是mongodb驱动程序, 只是面向的平台不同

  2. 链接数据库

    const mongoose = require('mongoose');mongoose.connect('mongodb://127.0.0.1:27017/my_blog').then(() => {console.log('链接数据库成功');}).catch(() => {console.log('链接数据库失败');});
    
  3. Schema 对于 Mongoose,一切都源自Schema(模式)。模式用于规定文档的形状, 就像mysql中表的设计一样
    设计一个user文档 其中 username 被设置为 1.类型为string 2.必须不可省略 3.不可改 4.指定为唯一索引

    const userSchema = new mongoose.Schema({// 用户名username: {type: String,required: true,// 防止应用程序更改该字段 但不能模拟_id的真正不可变行为immutable: true,unique: true},// 用户密码userpwd: {type: String,required: true},// 用户头像user_avatar: {type: String,required: true},// 未读信息unread_message: {type: Number,required: true},// tokentoken: {type: String,required: true},// 是否合法用户valid_account: {type: Boolean,required: true},// 用户信息更新时间userinfo_updated_at: {type: String,required: false},// 用户昵称nickname: {type: String,required: true,unique: true}},{versionKey: false,timestamps: {// 文档创建时间createdAt: 'created_at',// 文档更新时间updatedAt: 'updated_at'}}
    );
    
  4. Model Model模型是根据定义好的Schema构造的类。模型的实例称为文档。模型负责从底层 MongoDB 数据库对文档进行增删改查
    根据User模式创建User模型, 对, 就是一行代码

    const Users = mongoose.model('users', userSchema);
    
  5. 对文档的增删改查示例, 一切都是基于Model模型 而模型又基于Scheme 模式 或许可以这样理解~

      //新增await Users.create({username: body.userName,userpwd: body.userPwd,nickname: '随机昵称' + (~~(Math.random() * 1000) + 1),user_avatar: 'https://cube.elemecdn.com/0/88/03b0d39583f48206768a7534e55bcpng.png',unread_message: ~~(Math.random() * 19) + 1,token,valid_account: true,userinfo_updated_at: void 0});//查找await Users.findOne({ username: body.userName }, { _id: 0, userpwd: 0 });//更新await Users.findOneAndUpdate({ username: user.userName },{ nickname: body.nickname, userinfo_updated_at: moment(Date.now()).format('YYYY-MM-DD HH:mm:ss') });//删除await Users.deleteOne({username: body.userName})
    
  6. 仅仅是一个node学习路线的指引, mongoose还有很多强大的功能, 阅读文档不一定能顺利学习和深入, 可以通过收集优质文档和视频来进一步学习

这篇关于node 第二十五天 基于 node 的 mongodb 数据库驱动程序 mongoose的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/741858

相关文章

Linux下MySQL数据库定时备份脚本与Crontab配置教学

《Linux下MySQL数据库定时备份脚本与Crontab配置教学》在生产环境中,数据库是核心资产之一,定期备份数据库可以有效防止意外数据丢失,本文将分享一份MySQL定时备份脚本,并讲解如何通过cr... 目录备份脚本详解脚本功能说明授权与可执行权限使用 Crontab 定时执行编辑 Crontab添加定

如何通过try-catch判断数据库唯一键字段是否重复

《如何通过try-catch判断数据库唯一键字段是否重复》在MyBatis+MySQL中,通过try-catch捕获唯一约束异常可避免重复数据查询,优点是减少数据库交互、提升并发安全,缺点是异常处理开... 目录1、原理2、怎么理解“异常走的是数据库错误路径,开销比普通逻辑分支稍高”?1. 普通逻辑分支 v

Python与MySQL实现数据库实时同步的详细步骤

《Python与MySQL实现数据库实时同步的详细步骤》在日常开发中,数据同步是一项常见的需求,本篇文章将使用Python和MySQL来实现数据库实时同步,我们将围绕数据变更捕获、数据处理和数据写入这... 目录前言摘要概述:数据同步方案1. 基本思路2. mysql Binlog 简介实现步骤与代码示例1

使用shardingsphere实现mysql数据库分片方式

《使用shardingsphere实现mysql数据库分片方式》本文介绍如何使用ShardingSphere-JDBC在SpringBoot中实现MySQL水平分库,涵盖分片策略、路由算法及零侵入配置... 目录一、ShardingSphere 简介1.1 对比1.2 核心概念1.3 Sharding-Sp

Go语言连接MySQL数据库执行基本的增删改查

《Go语言连接MySQL数据库执行基本的增删改查》在后端开发中,MySQL是最常用的关系型数据库之一,本文主要为大家详细介绍了如何使用Go连接MySQL数据库并执行基本的增删改查吧... 目录Go语言连接mysql数据库准备工作安装 MySQL 驱动代码实现运行结果注意事项Go语言执行基本的增删改查准备工作

MySQL 数据库表操作完全指南:创建、读取、更新与删除实战

《MySQL数据库表操作完全指南:创建、读取、更新与删除实战》本文系统讲解MySQL表的增删查改(CURD)操作,涵盖创建、更新、查询、删除及插入查询结果,也是贯穿各类项目开发全流程的基础数据交互原... 目录mysql系列前言一、Create(创建)并插入数据1.1 单行数据 + 全列插入1.2 多行数据

MySQL 数据库表与查询操作实战案例

《MySQL数据库表与查询操作实战案例》本文将通过实际案例,详细介绍MySQL中数据库表的设计、数据插入以及常用的查询操作,帮助初学者快速上手,感兴趣的朋友跟随小编一起看看吧... 目录mysql 数据库表操作与查询实战案例项目一:产品相关数据库设计与创建一、数据库及表结构设计二、数据库与表的创建项目二:员

MybatisPlus中removeById删除数据库未变解决方案

《MybatisPlus中removeById删除数据库未变解决方案》MyBatisPlus中,removeById需实体类标注@TableId注解以识别数据库主键,若字段名不一致,应通过value属... 目录MyBATisPlus中removeBypythonId删除数据库未变removeById(Se

在 Spring Boot 中连接 MySQL 数据库的详细步骤

《在SpringBoot中连接MySQL数据库的详细步骤》本文介绍了SpringBoot连接MySQL数据库的流程,添加依赖、配置连接信息、创建实体类与仓库接口,通过自动配置实现数据库操作,... 目录一、添加依赖二、配置数据库连接三、创建实体类四、创建仓库接口五、创建服务类六、创建控制器七、运行应用程序八

Oracle数据库定时备份脚本方式(Linux)

《Oracle数据库定时备份脚本方式(Linux)》文章介绍Oracle数据库自动备份方案,包含主机备份传输与备机解压导入流程,强调需提前全量删除原库数据避免报错,并需配置无密传输、定时任务及验证脚本... 目录说明主机脚本备机上自动导库脚本整个自动备份oracle数据库的过程(建议全程用root用户)总结