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

相关文章

SQL Server修改数据库名及物理数据文件名操作步骤

《SQLServer修改数据库名及物理数据文件名操作步骤》在SQLServer中重命名数据库是一个常见的操作,但需要确保用户具有足够的权限来执行此操作,:本文主要介绍SQLServer修改数据... 目录一、背景介绍二、操作步骤2.1 设置为单用户模式(断开连接)2.2 修改数据库名称2.3 查找逻辑文件名

SQL Server数据库死锁处理超详细攻略

《SQLServer数据库死锁处理超详细攻略》SQLServer作为主流数据库管理系统,在高并发场景下可能面临死锁问题,影响系统性能和稳定性,这篇文章主要给大家介绍了关于SQLServer数据库死... 目录一、引言二、查询 Sqlserver 中造成死锁的 SPID三、用内置函数查询执行信息1. sp_w

Druid连接池实现自定义数据库密码加解密功能

《Druid连接池实现自定义数据库密码加解密功能》在现代应用开发中,数据安全是至关重要的,本文将介绍如何在​​Druid​​连接池中实现自定义的数据库密码加解密功能,有需要的小伙伴可以参考一下... 目录1. 环境准备2. 密码加密算法的选择3. 自定义 ​​DruidDataSource​​ 的密码解密3

Maven项目中集成数据库文档生成工具的操作步骤

《Maven项目中集成数据库文档生成工具的操作步骤》在Maven项目中,可以通过集成数据库文档生成工具来自动生成数据库文档,本文为大家整理了使用screw-maven-plugin(推荐)的完... 目录1. 添加插件配置到 pom.XML2. 配置数据库信息3. 执行生成命令4. 高级配置选项5. 注意事

在Java中基于Geotools对PostGIS数据库的空间查询实践教程

《在Java中基于Geotools对PostGIS数据库的空间查询实践教程》本文将深入探讨这一实践,从连接配置到复杂空间查询操作,包括点查询、区域范围查询以及空间关系判断等,全方位展示如何在Java环... 目录前言一、相关技术背景介绍1、评价对象AOI2、数据处理流程二、对AOI空间范围查询实践1、空间查

Python+PyQt5实现MySQL数据库备份神器

《Python+PyQt5实现MySQL数据库备份神器》在数据库管理工作中,定期备份是确保数据安全的重要措施,本文将介绍如何使用Python+PyQt5开发一个高颜值,多功能的MySQL数据库备份工具... 目录概述功能特性核心功能矩阵特色功能界面展示主界面设计动态效果演示使用教程环境准备操作流程代码深度解

MySQL数据库实现批量表分区完整示例

《MySQL数据库实现批量表分区完整示例》通俗地讲表分区是将一大表,根据条件分割成若干个小表,:本文主要介绍MySQL数据库实现批量表分区的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考... 目录一、表分区条件二、常规表和分区表的区别三、表分区的创建四、将既有表转换分区表脚本五、批量转换表为分区

基于MongoDB实现文件的分布式存储

《基于MongoDB实现文件的分布式存储》分布式文件存储的方案有很多,今天分享一个基于mongodb数据库来实现文件的存储,mongodb支持分布式部署,以此来实现文件的分布式存储,需要的朋友可以参考... 目录一、引言二、GridFS 原理剖析三、Spring Boot 集成 GridFS3.1 添加依赖

MySQL Workbench工具导出导入数据库方式

《MySQLWorkbench工具导出导入数据库方式》:本文主要介绍MySQLWorkbench工具导出导入数据库方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝... 目录mysql Workbench工具导出导入数据库第一步 www.chinasem.cn数据库导出第二步

Mysql数据库中数据的操作CRUD详解

《Mysql数据库中数据的操作CRUD详解》:本文主要介绍Mysql数据库中数据的操作(CRUD),详细描述对Mysql数据库中数据的操作(CRUD),包括插入、修改、删除数据,还有查询数据,包括... 目录一、插入数据(insert)1.插入数据的语法2.注意事项二、修改数据(update)1.语法2.有