前言
开发中避免不了需要和数据库打交道,而在 Node.js 中最常用的数据库就是 MongoDB 了。处理 MongoDB 数据库最大的问题就是需要建立 Schema,一般我们使用 Mongoose 去创建 Schema,但是 Mongoose 的使用过程并不是很方便。因此,有一款名为 angoose 的 npm 包,它可以帮助我们更方便地创建 Schema。
angoose 简介
angoose 是一款基于 Mongoose 的 npm 包,它可以让我们更方便地创建数据库 Schema。与传统的 Mongoose 相比,angoose 的使用更加简单,更加友好,同时,它也提供了 Cache 和 Context 系统,可以帮助我们更好地控制数据的加载和缓存。
angoose 安装
我们可以使用 npm 命令来安装 angoose:
npm install angoose --save
angoose 使用
引入 angoose
在使用 angoose 之前,我们需要先引入它:
const mongoose = require("mongoose"); const angoose = require("angoose");
使用 angoose 创建 Schema
使用 angoose 创建 Schema 相比传统的 Mongoose 创建要简单得多:
const userSchema = new angoose.Schema({ username: String, password: String, }); const User = angoose.model("User", userSchema);
使用 angoose 创建 Model
我们同样可以使用 angoose 创建 Model:
-- -------------------- ---- ------- ----- --------- - -------------------- ------- - --------- ------- --------- ------- -- - --------------- -------- - --展开代码
我们可以在第三个参数中设置 collection 的名字,非常方便。
使用 angoose 查询数据
angoose 的查询也和传统的 Mongoose 查询一样:
User.find({ username: "John" }) .then((users) => { console.log(users); }) .catch((err) => { console.log(err); });
angoose 的 Cache 系统
angoose 内置了 Cache 系统,可以帮助我们更好地控制数据的加载和缓存。它支持三种缓存策略:
- None:不使用缓存。
- Query:缓存查询的结果,缓存时间可以自定义。
- Document:缓存单个文档,缓存时间可以自定义。
我们可以如下使用 Cache 系统:
-- -------------------- ---- ------- ----- ---------- - --- ---------------- --------- ------- --------- ------- --- ----------------------- - --------- -------- ---- ---- --- ----- ---- - --------------------- ------------展开代码
此时,我们便开启了查询缓存,缓存时间为 10 分钟。
angoose 的 Context 系统
angoose 还为我们提供了 Context 系统,使得数据模型的全局变量,实例方法和静态方法都支持传递上下文。使用 Context 系统,我们可以方便地将某些需要全局使用的方法添加到一个共享的上下文中。
我们可以如下使用 Context 系统:
-- -------------------- ---- ------- ----- ---------- - --- ---------------- --------- ------- --------- ------- --- -------------------------- - --------- ----- ---------- -------- ----- ---- -------- - ------ -------- ------ -------- ------ ---- -- --- ---------------------------------------------- -------- ---- - ------------------ ----------------- --------- ------------- -- ----------- ------ -- - -- ----- - ------ -------- - -------- ----- - --- --- --- ----- ---- - --------------------- ------------ ------------------------------------------ ----- -------- ---------- - ----- ---- - ----- -------------- -------- --- ------ ----- ---展开代码
angoose 与 Mongoose 的兼容性
由于 angoose 是基于 Mongoose 开发的,它与 Mongoose 的 Schema 和 Model 是兼容的。 如果你觉得 Mongoose 更好,你也可以继续使用 Mongoose,而使用 angoose 可以使得你的代码更加简洁明了。
总结
虽然 MongoDB 比较灵活,但是它不是严格的文档型数据库,它的 Schema 定义也比较复杂。而 angoose 可以帮助我们更好地控制数据的加载和缓存,同时使用起来也非常简单。在实际开发中,我们可以选择继续使用传统的 Mongoose,或者使用 angoose。无论怎样,我们都需要根据具体的业务需求来选择合适的数据库和 ORM 工具,让代码更加简洁和易懂。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/78650