[mongoose] vue3+vite utilise mangouste | mongoose7.0 utilise

avant-propos

Remarque :

  • Je pense personnellement que les documents chinois ne conviennent qu'à l'apprentissage et à la référence, et que les documents anglais conviennent vraiment à une utilisation dans des projets
  • Parce que les documents chinois peuvent ne pas avoir été synchronisés avec les derniers documents sur le site officiel.
  • Par exemple, la version du document chinois est 5.x, mais la dernière version du document du site Web officiel est 7.x. L'API ne prend plus en charge les rappels et est remplacée par Promise. Si la démo du document chinois est utilisée, diverses erreurs se produiront. jeté.

référence opérateur

Référence de l'opérateur - https://www.mongodb.com/docs/manual/reference/operator/query/gte/

  • Adresse alternative - https://www.mongodb.com/docs/manual/reference/operator/query/gte/

numéro de version

  • mongodb v6.0.5
  • mongoose v7.1.1

documentation chinoise mangouste - http://mongoosejs.net/docs/guide.html
documentation anglaise mongoose - https://mongoosejs.com/docs/subdocs.html


configuration rapide

package.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"
  }
}

base de données de liens de mangouste

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))
  • Mot de passe, plus de référence de lien - https://mongoosejs.com/docs/connections.html

  • Dans la plupart des cas, la fonctionnalité de lien de base de données doit être exportée en tant que module

Exporter:

src/service/dbcontent.js

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

export default db

Utilisation :
point clé : l'importation import db from "./dbcontent.js" doit ajouter un suffixe .jset un chemin relatif./

  • L'importation de la manière suivante signalera une erreur
    • import db from "./dbcontent" pas .jsde suffixe
    • import db from "dbcontent.js" pas de chemin relatif./
    • import db from "/dbcontent.js" pas de chemin relatif./
    • import db from "@/dbcontent.js" seul chemin relatif./

Référence d'attente de niveau supérieur


src/service/app.js

import db from "./dbcontent.js"  

const mg = await db

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

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

modèle et schéma

  • model(colName,data) - le modèle à créer
    • colName nom de la collection, si la base de données n'a pas de nom de collection spécifié, elle sera créée automatiquement
      • type : Chaîne
    • données données ajoutées
      • type : [Objet, Tableau]

  • Schema(config) - règles de création de modèles
    • config - configuration des règles
      • type : Objet

Il doit y avoir une règle de schéma avant de créer un modèle
- Le schéma est le type de données du modèle spécifié
- Si le modèle créé ne correspond pas aux règles de schéma spécifiées, une erreur sera signalée


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()
  • environnement de nœud en cours d'exécution

insérez la description de l'image ici

augmenter

  • Le schéma peut être imbriqué directement
// 在集合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()

Résultats d'exécution de l'environnement de nœud
insérez la description de l'image ici

删(deleteMany || supprimerUn)

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()
  • résultat d'impression
    • reconnu
      • vrai supprimé avec succès
      • fausse suppression a échoué
    • deleteCount nombre supprimé
{
    
     acknowledged: true, deletedCount: 1 }
{
    
     acknowledged: true, deletedCount: 2 }

Commandes courantes

  1. conn.dropDatabase(dbName) - supprime une base de données
    • dbName nom de la base de données
      • type : Chaîne
    • valeur de retour
      • Promesse
// 删除test数据库
const delDb = await conn.dropDatabase('test')
console.log(delDb);

  1. conn.dropCollection(colName) - supprime une base de données
    • nom de la collection colName
      • type : Chaîne
    • valeur de retour
      • Promesse
// 删除store集合
const delCol = await conn.dropCollection('store')
console.log(delCol);

événement de connexion à la base de données de connexion

  1. connectingLorsque la base de données est initialement liée
  2. connectedLorsque la connexion à la base de données est réussie ou lorsque la connexion est perdue et reconnectée. comme quand je vais à la voiture, quand je mets la clé dans la voiture
  3. openLa base de données est connectée et peut être exploitée. Tout comme quand je vais conduire, la voiture a déjà démarré, et quand j'appuie sur l'accélérateur, je peux courir
  4. disconnectedLorsque la connexion à la base de données est perdue, cela peut être le résultat d'un code fermant explicitement la connexion, d'une panne du serveur de base de données ou d'un problème de connexion réseau. C'est comme si ma voiture s'arrêtait soudainement en roulant.
  5. closeLorsque la base de données est fermée avec succès. Comme quand j'éteins la voiture et tire la clé
  6. reconnectedLorsque la connexion à la base de données est perdue et reconnectée avec succès. C'est comme quand ma voiture a été éteinte pendant la conduite et que j'ai redémarré la voiture.
  7. errorerreur de connexion
  8. allLorsqu'il est connecté à un jeu de répliques et que Mongoose s'est connecté avec succès à tous les serveurs spécifiés dans la chaîne de connexion

demo.js

import mongoose from "mongoose"

const readUrl = 'mongodb://jxzr:[email protected]:27017/juxianz' 
const db = mongoose.connect(readUrl )

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

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

Guess you like

Origin blog.csdn.net/qq_43614372/article/details/130518732