【mongoose】vue3+vite使用mongoose | mongoose7.0使用

这篇具有很好参考价值的文章主要介绍了【mongoose】vue3+vite使用mongoose | mongoose7.0使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

注意

  • 个人认为中文文档仅适合学习参考,英文文档才真正适合项目中使用
  • 因为中文文档可能没有同步官网最新文档。
  • 比如中文文档版本是5.x,但官网最新版文档是7.x,api已不支持回调,改为Promise,若使用了中文文档demo,会抛出各种错误。

操作符参考

操作符参考-https://www.mongodb.com/docs/manual/reference/operator/query/gte/

  • 备用地址 - https://www.mongodb.com/docs/manual/reference/operator/query/gte/

版本号

  • mongodb v6.0.5
  • mongoose v7.1.1

mongoose中文文档 - http://mongoosejs.net/docs/guide.html
mongoose英文文档 - https://mongoosejs.com/docs/subdocs.html


vite配置

  • 配置 "type": "module"

    • 支持
      • 支持使用es6导入- import mongoose from "mongoose"
      • 支持顶层await参考
    • 若不配置则不支持es6导入,只能使用 const mongoose= require( "mongoose")
    • 若不配置不支持顶层await参考
  • 参考配置 - 重点第五行

pacgage.json

{
  "name": "myui",
  "version": "0.0.0",
  "private": true,
  "type": "module",
  "scripts": {
    "dev": "vite --host  0.0.0.0",
    "build": "vite build",
    "preview": "vite preview"
  },
  "dependencies": {
    "mongoose": "^7.1.0",
    "vue": "^3.2.45",
    "vue-router": "^4.1.6",
  },
  "devDependencies": {
    "vite": "^4.0.1"
  }
}

mongoose链接数据库

src/service/dbcontent.js

import mongoose from "mongoose"
const db = mongoose.connect('mongodb://127.0.0.1:27017/test')


db.then(mg=> { // 其实参数mg就是mongoose对象
    const { Schema } = mg
     
    console.log(mongoose === mg)//true
    console.log(mongoose.Schema === Schema)//true

}, err => console.log(err))
  • 密码、更多链接方式参考 - https://mongoosejs.com/docs/connections.html

  • 大多数情况数据库链接功能应作为一个模块导出

导出:

src/service/dbcontent.js

import mongoose from "mongoose"
const db = mongoose.connect('mongodb://127.0.0.1:27017/test')

export default db

使用:
重点: 导入import db from "./dbcontent.js" 必须加后缀.js与相对路径./

  • 使用以下方式导入会报错
    • import db from "./dbcontent" 没有.js后缀
    • import db from "dbcontent.js" 没有相对路径./
    • import db from "/dbcontent.js" 没有相对路径./
    • import db from "@/dbcontent.js" 只能是相对路径./

顶层await参考

  • 顶层await参考-http://t.csdn.cn/eVeFT
  • 备用地址 - http://t.csdn.cn/eVeFT

src/service/app.js

import db from "./dbcontent.js"  

const mg = await db

const { Schema } = mg
const conn = mg.connection

console.log('数据库已连接')

model与Schema

  • model(colName,data) - 创建的模型
    • colName 集合名称,若数据库没有指定的集合名称会自动创建
      • type: String
    • data 添加的数据
      • type: [Object,Array]

  • Schema(config) - 创建模型的规则
    • config - 规则配置
      • type: Object

创建一个model前必须有Schema规则
- Schema是规定model的数据类型
- 若创建的model与规定的Schema规则不符会报错


demo.js

// 连接数据库
import mongoose from "mongoose"
const db = mongoose.connect('mongodb://127.0.0.1:27017/test')

// mg ->  mongoose
const mg = await db //等待数据库连接 
const { Schema } = mg //获取Schema 
const conn = mg.connection //获取connection连接方法

// 1. 创建Schema(制定规则)
const userSchema = new Schema(
    {
        name: String
    }
)

// 2. 创建model,并在集合users中使用userSchema规则
const UserModel = mg.model('users', userSchema)

// 3. 使用UserModel创建实例
const user = new UserModel(
    {
        name: '我是老6呀'
    }
)

// 4. 保存创建的实例,保存失败会报错,成功将返回结果
const userSaveStatu = await user.save()

// 查看创建结果
console.log(userSaveStatu)

// 5. 关闭数据库连接
conn.close()
  • node环境运行

【mongoose】vue3+vite使用mongoose | mongoose7.0使用

  • 可直接嵌套Schema
// 在集合users增加数据
const UserModel = mg.model('users', new Schema({
    age: {
        type: Number,//数据类型为Number
        min: 6,//最小值
        max: 251//最大值
    },
    name: {
        type: String,
        trim: true,//是否清空字符串首尾空格
        minlength: 2,//字符串最小长度
        maxlength: 20//字符串最大长度
    },
    sex: {
        type: Number,
        enum: [0, 1],//枚举
        default: 1//默认值
    }
}))

// 保存
const createUser = await new UserModel({
    age: Math.round(Math.random() * (251 - 6)) + 6,
    name: '小米呀',
    sex: Math.round(Math.random())
}).save()

console.log(createUser)

// 关闭连接
conn.close()

node环境运行结果
【mongoose】vue3+vite使用mongoose | mongoose7.0使用

删(deleteMany || deleteOne)

const UserModel = mg.model('users', new Schema(
    {
        userName: String,
        pas: String,
        // 嵌套的文档
        posts: [
            new Schema(
                {
                    data: String
                }
            )
        ]
    }
))

// 删除一个
const delUser = await UserModel.deleteOne({ userName: '小林同学' })
// 删除多个 删除age大于等于18的数据
const delMore = await UserModel.deleteMany({ age: { $gte: 18 } })

console.log(delUser)
console.log(delMore)

// 关闭连接
conn.close()
  • 打印结果
    • acknowledged
      • true 删除成功
      • false 删除失败
    • deletedCount 删除数量
{ acknowledged: true, deletedCount: 1 }
{ acknowledged: true, deletedCount: 2 }

常用命令

  1. conn.dropDatabase(dbName) - 删除数据库
    • dbName 数据库名称
      • type : String
    • 返回值
      • Promise
// 删除test数据库
const delDb = await conn.dropDatabase('test')
console.log(delDb);

  1. conn.dropCollection(colName) - 删除数据库
    • colName 集合名称
      • type : String
    • 返回值
      • Promise
// 删除store集合
const delCol = await conn.dropCollection('store')
console.log(delCol);

connection数据库连接事件

  1. connecting 数据库初始链接时
  2. connected 数据库连接成功时,或失去链接重连时。就像我去开车,刚插上车钥匙时
  3. open 已连接数据库,且可操作数据库 。就像我去开车,车已经启动完成,踩下油门就可以跑时
  4. disconnected 与数据库失去链接时,可能是代码显式关闭连接、数据库服务器崩溃或网络连接问题造成。就像我车开着开着就突然熄火了
  5. close 成功关闭数据库时。就像我把车熄火,并拔了车钥匙时
  6. reconnected 与数据库失去连接,并成功重新连接时。就像我车开着开着熄火了,我又重新启动车辆时。
  7. error 连接出错
  8. all 连接到副本集并且Mongoose已成功连接到连接字符串中指定的所有服务器时时

demo.js文章来源地址https://www.toymoban.com/news/detail-445313.html

import mongoose from "mongoose"

const readUrl = 'mongodb://jxzr:123456@127.0.0.1:27017/juxianz' 
const db = mongoose.connect(readUrl )

conn.on('close',res=>console.log('关闭'))

 setTimeout(() => {
     conn.close()
 }, 1000)

到了这里,关于【mongoose】vue3+vite使用mongoose | mongoose7.0使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • vue3.2+vite+代理,使用websocket

    之前以为websocket复杂,想使用插件来实现,查了一番资料,原生写法就很简单。 查询列表,需要实时获取员工上报的数据 Table.vue 因为跨域问题,这里使用了vite的proxy代理功能 vite.config.ts 如果代理设置好,连接成功,以上websocket会打印\\\"连接成功\\\"和输出返回。 完! 项目运行

    2024年02月10日
    浏览(47)
  • 【Vue3实践】(六)Vue3使用vite处理环境变量、打包部署、nginx配置

    由于在日常开发中会有一部分前端的开发任务,会涉及到Vue的项目的搭建、迭代、构建发布等操作,所以想系统的学习一下Vue相关的知识点,本专题会依照Vue的搭建、开发基础实践、进阶用法、打包部署的顺序进行记录。 历史文章链接如下: 《Vue3搭建、路由配置与基本语法

    2023年04月08日
    浏览(143)
  • 如何使用Vite创建Vue3的uniapp项目

    Vue3/Vite 版要求 node 版本^14.18.0 || =16.0.0 如果使用 HBuilderX(3.6.7 以下版本)运行 Vue3/Vite 创建的最新的 cli 工程,需要在 HBuilderX 运行配置最底部设置 node 路径 为自己本机高版本 node 路径(注意需要重启 HBuilderX 才可以生效) HBuilderX Mac 版本菜单栏左上角 HBuilderX-偏好设置-运行配

    2024年02月09日
    浏览(131)
  • 使用vite创建vue3的Cesium基础项目

    使用vite创建vue3项目:可以参考官方文档Vite官方中文文档 1.1 在指定文件夹路径下使用npm(前提是已经安装好了node): 1.2 cd到创建的项目文件夹: 安装并使用Cesium; 2.1 找到插件:vue插件, 找到社区插件, ctrl+F搜索“Cesium”,找到Cesium的插件使用教程:Cesium插件 就能找到C

    2024年02月13日
    浏览(56)
  • 使用 Vite + Vue3 + Element-Plus + Pinia + Ts 搭建 Vue3 项目

    Vite 需要 Node.js 版本 14.18+,16+。然而,有些模板需要依赖更高的 Node 版本才能正常运行,当你的包管理器发出警告时,请注意升级你的 Node 版本。 首先 npm 输入: Project name :项目名称 Select a framework :选择一个框架 Select a variant :选择 ts 或者 js 输入项目名称后选择 vue 选择

    2024年02月09日
    浏览(64)
  • Vue3+vite搭建基础架构(6)--- 使用vue-router

    这里记录下自己在Vue3+vite的项目使用vue-router的过程,不使用ts语法,方便以后直接使用。这里承接自己的博客Vue3+vite搭建基础架构(5)— 使用vue-i18n这篇博客,在该博客项目的基础上增加使用vue-router。 Vue3使用vue-router官方文档:https://router.vuejs.org/zh/installation.html 根据官网给

    2024年02月21日
    浏览(49)
  • 使用vite框架封装vue3插件,发布到npm

    目录   一、vue环境搭建 1、创建App.vue 2、修改main.ts 3、修改vite.config.ts 二、插件配置 1、创建插件 2、开发调试 3、打包配置 4、package.json文件配置 5、执行打包命令 pnpm build 6、修改index.d.ts 目录   一、vue环境搭建 1、创建App.vue 2、修改main.ts 3、修改vite.config.ts 二、插件配置

    2024年01月17日
    浏览(50)
  • vue3+vite路由中使用element自动导入图标

    el-icon v-if=\\\"childItem.meta childItem.meta.icon\\\"          component :is=\\\"childItem.meta.icon\\\" / /el-icon import { createRouter, createWebHashHistory } from \\\'vue-router\\\' import Layout from \\\'../layout/index.vue\\\' import { markRaw } from \\\'vue\\\' export const asyncRoutes = [   {     path: \\\'/\\\',     name: \\\'HomePage\\\',     component: Layout,     redir

    2024年02月15日
    浏览(44)
  • 【vue3】webpack和vite介绍与使用【超详细】

    打包工具 称为 构建工具 使用模块化开发主要面临两个 问题 :1.浏览器兼容性问题 2.模块化过多时,加载问题。 使用构建工具,对代码进行打包,将多个模块打包成一个文件。这样一来及解决了兼容性问题,又解决了模块过多的问题 作用 :构建工具可以将我们使用esm规范编写

    2024年02月07日
    浏览(34)
  • vue3+vite中使用import.meta.glob

    前言:         在vue2的时候,我们一般引入多个js或者其他文件,一般使用  require.context 来引入多个不同的文件,但是vite中是不支持 require的,他推出了一个类似的功能,就是用import.meta.glob来引入多个,单个的文件。 vue2 中使用  require 来引入多个不同的js文件 1、引入 

    2024年02月15日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包