Mongoose:如何让 ObjectId 即可用又可读

阅读时长 4 分钟读完

Mongoose:如何让 ObjectId 即可用又可读

在 MongoDB 数据库中,每一个文档都有一个唯一的 _id 字段来表示其在数据库中的唯一性。这个 _id 字段是一个由 MongoDB 自动生成的 ObjectID 类型。

在使用 Mongoose 构建 Node.js 应用时,ObjectID 类型会经常被用到。然而,这些 ObjectID 通常在数据库中是以十六进制编码展示的,不是很直观也不易于人类阅读。为了解决这个问题,我们需要一种方法来将 ObjectID 转换成对人类友好的字符串。本文将介绍如何在 Mongoose 中进行处理。

第一步:安装依赖

我们需要安装一个 NPM 模块叫做 shortid,这是一个简单的库,用于生成短的、易于阅读的字符串 ID。

在项目中安装 shortid:

第二步:定义 Mongoose schema

首先,我们需要定义 Mongoose schema,用于描述我们的数据模型。在定义 schema 时,我们需要将 ObjectId 类型字段以字符串类型存储。这个过程可以通过在 schema 中定义一个虚拟字段完成,例如:

-- -------------------- ---- -------
----- -------- - --------------------
----- ------- - -------------------
----- ------ - ----------------

----- ------------- - --- --------
  -------------- -
    ----- -------
    --------- ----
  --
  ------------------- -
    ----- -------
    -------- ----------------
  -
-- -
  ----------- -----
  ------- -
    --------- ----
  -
---

-------------------------------------------
  ------ ------------------------
---

这里,我们定义了一个名为 readableIdentifier 的虚拟字段,它的值是 shortid 生成的短字符串。通过将 id 字段定义为一个虚拟字段(virtual field),我们可以在我们的应用中使用它,但是它并不会被存储在数据库中。

第三步:使用 readableIdentifier 字段

现在我们已经把 ObjectId 转换成了人类可以理解的短字符串,我们可以在代码中使用他们来查询和更新我们的数据库记录。

查询记录:

更新记录:

总结

通过使用 shortid 这个库,我们在 Mongoose 应用中可以轻松地将 ObjectId 转换为可读的字符串。并且我们在定义 schema 中可以定义虚拟字段来模拟一个字符串格式的 ObjectId,这使得我们能够更容易地阅读和管理数据库记录。在实现时,需要注意该虚拟字段在查询和更新操作中的使用方式。

希望本文对 Mongoose 的初学者有所帮助。完整示例代码请参考:https://github.com/MickiFoerster/mongoose-objectid-readable

参考链接:

https://www.npmjs.com/package/shortid

https://mongoosejs.com/docs/2.7.x/docs/virtuals.html

https://docs.mongodb.com/manual/reference/method/ObjectId/#ObjectId

https://github.com/MickiFoerster/mongoose-objectid-readable

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64f820f2f6b2d6eab30430ec

纠错
反馈