在前端开发中,Mongodb 和 Mongoose 是常见的数据库和 ORM 框架。Mongodb 是一款高性能、面向文档的 NoSQL 数据库,而 Mongoose 是在 Node.js 中操作 Mongodb 的 ORM 框架。本文将详细讲解 Mongodb 和 Mongoose 的关系,并给出示例代码。
Mongodb
Mongodb 是一款 NoSQL 数据库,相对于关系型数据库使用表格存储数据,它使用文档存储数据。文档类似于 JSON 对象,由键值对组成。Mongodb 的数据模型非常灵活,可以自由地增加、删除、修改文档的字段。Mongodb 也非常适用于高性能的 Web 应用程序,因为它可以轻松地水平扩展。
下面是 Mongodb 的安装和使用示例:
- 安装 Mongodb:
brew install mongodb
- 启动 Mongodb 服务:
mongod
- 使用 Mongodb Shell:
mongo
- 创建数据库和文档:
// 进入 dbName 数据库
use dbName
// 插入一条数据到 test 集合中
db.test.insertOne({ name: 'Alice', age: 20 })Mongoose
Mongoose 是在 Node.js 中操作 Mongodb 的 ORM 框架,它提供了极其灵活的查询和验证功能,可以帮助我们轻松地创建文档对象模型。Mongoose 可以轻松地将数据存储到数据库中,并且提供了一些非常有用的工具,例如连接池、缓存等。
下面是使用 Mongoose 的示例:
- 安装 Mongoose:
npm install mongoose --save
- 连接 Mongodb:
// www.javascriptcn.com code example
const mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/dbName', {
useNewUrlParser: true,
useUnifiedTopology: true,
useCreateIndex: true,
useFindAndModify: false
});
const db = mongoose.connection;
db.on('error', console.error.bind(console, 'connection error:'));
db.once('open', function() {
console.log('connected');
});- 创建一个模型:
const { Schema } = mongoose;
const userSchema = new Schema({
name: String,
age: Number
});
const User = mongoose.model('User', userSchema);- 使用模型:
// www.javascriptcn.com code example
// 创建一条数据
const user = new User({ name: 'Bob', age: 30 });
// 保存数据
user.save(function (err, user) {
if (err) return console.error(err);
console.log(user);
});
// 查询数据
User.findOne({ name: 'Bob' }, function (err, user) {
console.log(user);
});Mongodb 和 Mongoose 的关系
Mongodb 和 Mongoose 是密不可分的一对。前面我们已经了解了 Mongodb 和 Mongoose 的基本用法。现在让我们深入探讨一下 Mongodb 和 Mongoose 的关系。
Mongodb 提供了一些基本的 API 来进行数据库的操作。例如,我们可以使用 Mongodb 的 insertOne 方法将一条数据插入到数据库中,使用 findOne 方法查询一条数据,等等。这些 API 虽然功能强大,但是它们带来了一些麻烦,例如缺乏验证和类型检查等。这就是 Mongoose 的用武之地。
Mongoose 使我们可以创建一个声明式的文档对象模型,将数据的结构和类型定义成对象,可以方便地使用各种验证和类型检查。此外,Mongoose 还提供了一些非常有用的函数,例如 findByIdAndUpdate、populate 等,让我们可以很方便地进行各种操作。
总之,Mongodb 是一款强大的 NoSQL 数据库,而 Mongoose 是在 Node.js 中操作 Mongodb 的 ORM 框架。二者的关系非常密切,Mongoose 让我们可以更加方便地操作 Mongodb。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/67c96a74e46428fe9e0d9ca6