在 Node.js 的 Web 应用程序中,数据库是不可或缺的一部分。使用 MongoDB 作为数据库是一个很好的选择。然而,如何从 MongoDB 中检索数据到应用程序的前端可能会是一个有点棘手的问题。在这种情况下,mongoose-autopopulate 是一个能够解决这个问题的好的 npm 包。
mongoose-autopopulate 简介
mongoose-autopopulate 是一个 Mongoose 的插件,它为在所有的子文档中自动填充其他集合中的记录提供了深度 populating 的支持。这个包也允许对单个或多个嵌套子文档进行查询,在查询后自动填充指定的嵌套字段。
安装
在你的应用程序中使用 mongoose-autopopulate 非常简单,你只需在命令行中执行以下命令安装:
npm install mongoose-autopopulate --save
使用示例
让我们看一个例子,假设我们有一个名为 authors 的集合和一个名为 books 的集合。每本书都有一个作者,并且我们希望在获取一本书的时候同时获取它的作者信息,可以使用以下方法:
-- -------------------- ---- ------- ----- -------- - -------------------- ----- ------------ - --------------------------------- ----- ------ - ---------------- ----- ------------ - --- -------- ----- ------ --- ----- ------ - ------------------------ -------------- ----- ---------- - --- -------- ------ ------- ------- - ----- ---------------------- ---- --------- ------------- ---- -- ------ ------ --- -------------------------------- ----- ---- - ---------------------- ------------ ----- ------ - --- -------- ----- ----- ------ --- ----- -------------- ----- ---- - --- ------ ------ ---- ---- -- ------ ------- ----------- ------ --- --- ----- ------------ ----- -------------- - ----- ------------------------------------------- ----------------------------
在这个例子中,我们定义了两个模式:一个是 author
模式,另一个是 book
模式。author
模式只有一个字段 name
,而 book
模式有三个字段:title
、author
和 pages
。author
字段是一个引用,它指向 authors
集合中的其中一个作者记录。注意到我们在 author
字段中指定了 autopopulate: true
。这告诉了插件在查询 book 对象时,自动填充 author 字段。
使用索引匹配填充嵌套字段
-- -------------------- ---- ------- ----- ---------------- - --- -------- ------ ------ --- ----- -------------- - --- -------- ----- ------- ------------- ------ ------------------------------- ---- ------------- --- ----- ------------- - --- -------- ----- ------- ---------- - - --------- - ----- ------------------------------- ---- ----------- ------------- ---- -- ------ ------ - - --- ----------------------------------- -------------- - - ----------- ---------------------------- ------------------ --------- -------------------------- ---------------- -------- ------------------------- -------------- --
如上所示,提前就可以定义好嵌套填充好的字段employees 内存储子文档,那么在使用时就可以使用自动填充机制。
另外,使用查询匹配的方式自动填充嵌套字段进行批量查询:
-- -------------------- ---- ------- ----- -------------- - ------------------------------- ----- --------------- - -------------------------------- ----- ----------------- - ---------------------------------- ----- ------- - ----- ----------------------------------- ----- -------- - ----- --------------------------------- --------------------- - --------------- ----- ---------------- ----- ---------------- - - --------- ------------------ ------ --------- --------- -- ----- -------------- - ----- ---------------------------------------------- ------------------
这里实现了公司的更新操作,同时更新其中关联的雇员信息,而且信息仅仅需要一次查询即可完成。
终点
mongoose-autopopulate 是一个非常有用的 npm 包,它使获取 MongoDB 数据变得更加自动化和容易。它的使用非常简单,只要按照上面的教程即可。在此基础上,你可以很容易地进行定制化,以满足你的应用程序的需求。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/73696