📜  猫鼬 - Javascript (1)

📅  最后修改于: 2023-12-03 15:11:11.655000             🧑  作者: Mango

猫鼬 - JavaScript

什么是猫鼬?

猫鼬(Mongoose)是一个基于Node.js的MongoDB对象模型工具。它提供了简单而强大的方式来管理MongoDB数据库。通过猫鼬,开发者可以使用JavaScript来定义Schema(模型),并且通过这种方式将Schema转换成MongoDB的文档。猫鼬还提供了内置的数据验证、查询构建器和钩子函数等功能。

安装

通过npm可以很容易地安装猫鼬:

npm install mongoose
使用猫鼬

在使用猫鼬之前,我们需要连接MongoDB数据库。连接数据库的方式和原生Node.js的方式非常相似。

const mongoose = require('mongoose');

mongoose.connect('mongodb://localhost/test', { useNewUrlParser: true });

注意:在定义Schema之前,我们需要先连接MongoDB数据库。如果你需要在应用程序启动时连接数据库,可以在app.js文件中连接数据库,并在连接成功时引入其他文件。

const express = require('express');
const mongoose = require('mongoose');

const app = express();

mongoose.connect('mongodb://localhost/test', { useNewUrlParser: true })
    .then(() => {
        console.log('Connected to MongoDB');
    })
    .catch(err => {
        console.error('Failed to connect to MongoDB', err);
    });

require('./models/User');

app.listen(3000, () => {
    console.log('Server started on port 3000');
});

定义Schema

我们可以使用猫鼬来定义MongoDB文档的Schema。Schema可以看作是文档的模板,表示文档的属性以及数据类型等信息。

const mongoose = require('mongoose');

const userSchema = new mongoose.Schema({
    name: String,
    email: String,
    age: Number
});

module.exports = mongoose.model('User', userSchema);

常用查询

通过猫鼬提供的查询构建器,我们可以轻松地进行常用的查询操作。

const User = require('./models/User');

// 查询全部用户
User.find()
    .then(users => {
        console.log(users);
    })
    .catch(err => {
        console.error(err);
    });

// 根据条件查询用户
User.find({ age: { $gt: 25 } })
    .then(users => {
        console.log(users);
    })
    .catch(err => {
        console.error(err);
    });

// 根据ID查询用户
User.findById('5d9794d4a1687f4ecc39dc9c')
    .then(user => {
        console.log(user);
    })
    .catch(err => {
        console.error(err);
    });

数据验证

通过在Schema中定义验证规则,猫鼬可以帮助我们验证数据的正确性。

const mongoose = require('mongoose');

const userSchema = new mongoose.Schema({
    name: {
        type: String,
        required: true
    },
    email: {
        type: String,
        required: true,
        unique: true
    },
    age: {
        type: Number,
        min: 18,
        max: 60
    }
});

module.exports = mongoose.model('User', userSchema);

钩子函数

猫鼬还提供了钩子函数,可以在保存、删除等操作前后执行一些操作。

const mongoose = require('mongoose');

const userSchema = new mongoose.Schema({
    name: String,
    email: String,
    age: Number
});

userSchema.pre('save', function(next) {
    console.log('before save');
    next();
});

userSchema.post('save', function(doc) {
    console.log('after save');
});

module.exports = mongoose.model('User', userSchema);
总结

通过猫鼬,我们可以轻松地管理MongoDB数据库。它提供了简单而强大的方式来定义Schema,并且通过这种方式将Schema转换成MongoDB的文档。猫鼬还提供了内置的数据验证、查询构建器和钩子函数等功能。使用猫鼬可以提高我们的开发效率,减少错误的发生。