zoukankan      html  css  js  c++  java
  • 3_mongoose ODM框架及其安装

    3_mongoose ODM框架及其安装

    mongoDB和mongoose

    我们可以将mongoDB想象成原始炼铁的一系列过程,将铁矿破碎、磨粉、烧结,这个过程都是人工操作的,极其繁琐,效率低下。所以对mongoDB进行封装,引入mongoose。

    mongoose可以想象成自动化流水线炼铁作业,大幅度提高操作的速度以及降低错误的可能。

    mongoose是mongoDB的一个对象模型工具,是基于node-mongodb-native开发的mongoDB的nodejs驱动,可以在异步的环境下执行。同时它也是针对mongoDB操作的一个对象模型库,封装了mongoDB对文档的一些增删改查等常用方法,让nodejs操作mongoDB数据库变得更加容易。

    mongodb 增删盖查数据库很自由,插入数据时传入json 数据就可以了,而没有对json格式进行约束,无法保证存在数据库里的数据都是同样的格式。
    所以mongoose为mongodb提供了一种直接的,基于scheme结构去定义你的数据模型。它内置数据验证,查询构建,业务逻辑钩子等,开箱即用。
    总的来说,建议使用mongoose对数据进行约束,相当于用ts改善js一样,让我们可以清晰地知道最后的数据类型。

    mongoose构建在mongodb之上,提供了Schema、Model和Document对象,用起来更为方便。
    我们可以用Schema对象定义文档的结构(类似表结构),可以定义字段和类型、唯一性、索引和验证。Model对象表示集合中的所有文档。Document对象作为集合中的单个文档的表示。mongoose还有Query和Aggregate对象,Query实现查询,Aggregate实现聚合。

    一般来说,服务器都不会直接操作数据库,而是通过相应的模型对象对数据/文档进行映射,再进行操作。
    因为服务器与数据库之间的连接很慢,首先要进行地址,端口,账号,密码和数据类型的校验,连接完成之后数据库要从磁盘上读取数据进行查询或者存储。
    而所谓的ODM对象文档模型框架就是

    • 1.预先定义好了类型约束规则,省去了校验的步骤,
    • 2.将磁盘上的数据库数据预加载到了内存,省去了大量的加载时间

    mongoDB是非关系型数据库,数据以键值对的形式存在(数据的组织形式不统一),每一个数据文档可以有不一样的字段,可以根据需要增加一些自己的键值对,而mongoDB作为一个数据库,它没有对服务器的crud指令进行快速分析的能力,或者说分析指令能力较弱。虽然mongoDB提供给node.js一些API进行数据库访问,但因为操作慢并且繁琐,这个时候需要一个媒介----mongoose。当mongoose接到服务器的crud指令,负责将已从磁盘上加载到内存的一条条数据映射成内存对象,让服务器进行操作。

    为什么使用第三方模块
    为什么使用第三方模块

    新建一个项目文件夹,使用控制台命令 cd 切换到该文件夹(或者直接复制路径到控制台),并在该文件夹内使用npm install mongoose命令下载 mongoose

    使用控制台命令 cd 切换到该文件夹
    使用控制台命令 cd 切换到该文件夹

    默认情况下,mongoDB是启动状态的,但如果链接数据库失败,可在命令行工具中运行net start mongoDB即可启动MongoDB,否则MongoDB将无法连接。

    npm i mongoose
    npm i mongoose

  • 相关阅读:
    使用tcmalloc编译启动时宕机
    使用tcmalloc编译出现undefined reference to `sem_init'
    使用AddressSanitizer做内存分析(一)——入门篇
    VIM-美化你的标签栏
    Entity Framework Code First (六)存储过程
    Entity Framework Code First (五)Fluent API
    Entity Framework Code First (四)Fluent API
    Entity Framework Code First (三)Data Annotations
    Entity Framework Code First (二)Custom Conventions
    Entity Framework Code First (一)Conventions
  • 原文地址:https://www.cnblogs.com/singledogpro/p/14961612.html
Copyright © 2011-2022 走看看