# @entria/graphql-mongoose-loader 中文文档

规范地址：https://npmcn.com/package/%40entria/graphql-mongoose-loader/

版本：4\.4\.0
npm 元数据更新时间：2024-06-26T16:17:52.434Z
中文译文更新时间：2026-11-14T02:49:46.453Z
软件包许可：MIT

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40entria/graphql-mongoose-loader
原文对照：https://npmcn.com/package/%40entria/graphql-mongoose-loader/?lang=original
项目主页：https://github.com/entria/graphql-mongoose-loader
源码仓库：https://github.com/entria/graphql-mongoose-loader

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：117 kB，46 个文件
- 模块格式：ESM + CJS
- TypeScript 类型：包内自带
- 运行依赖：0 个
- peer 依赖：graphql \*，mongoose \*，graphql-relay \*
- 首次发布：2017-06-22T10:41:33.233Z
- 最新版本发布：2022-01-14T17:27:35.755Z
- 近 30 天下载量：2476（2026-10-14 至 2026-11-12，npm 官方下载统计）
- 已发布版本数：29（近 12 个月 0 个）

## 中文简介

图形QL Mongoose 加载器助手

## 安装

```sh
npm install @entria/graphql-mongoose-loader
```

也可以使用：`pnpm add @entria/graphql-mongoose-loader`、`yarn add @entria/graphql-mongoose-loader`、`bun add @entria/graphql-mongoose-loader`

## README

# 图形QL Mongoose 加载器 [![CircleCI](https://circleci.com/gh/entria/graphql-mongoose-loader/tree/master.svg?style=svg)](https://circleci.com/gh/entria/graphql-mongoose-loader/tree/master)

## 安装

```
npm i @entria/graphql-mongoose-loader --save
yarn add @entria/graphql-mongoose-loader
```

## Mongoose 数据装入器批次

在您的 GraphQL 解析器/ 装入器中添加批次

为您的模型定义一个鼠类计划

```jsx
import mongoose from 'mongoose';

const Schema = new mongoose.Schema(
  {
    name: {
      type: String,
    },
    email: {
      type: String,
      required: true,
      index: true,
    },
    password: {
      type: String,
      hidden: true,
    },
  },
  {
    collection: 'User',
  },
);

export default mongoose.model('User', Schema);
```

为它创建数据载入器

```jsx
import { mongooseLoader } from '@entria/graphql-mongoose-loader';
import UserModel from './User';

export const getLoader = () => new DataLoader(ids => mongooseLoader(UserModel, ids));
```

## 从 Mongoose 光标连接

从 mongoose 光标创建连接

```jsx
import { connectionFromMongoCursor } from '@entria/graphql-mongoose-loader';

export const loadUsers = async (context: GraphQLContext, args: ConnectionArguments) => {
  const where = args.search
    ? {
        name: {
          $regex: new RegExp(`^${args.search}`, 'ig'),
        },
      }
    : {};
  const users = UserModel.find(where, { _id: 1 }).sort({
    createdAt: -1,
  });

  return connectionFromMongoCursor({
    cursor: users,
    context,
    args,
    loader: load,
  });
};
```

## 从 Mongoose 总和连接

从 mongoose 聚合创建连接

```jsx
import { connectionFromMongoAggregate } from '@entria/graphql-mongoose-loader';

export const loadUsersThatHaveGroup = async (context: GraphQLContext, args: ConnectionArguments) => {
  const aggregate = GroupModel.aggregate([
    {
      $lookup: {
        from: 'User',
        localField: 'users',
        foreignField: '_id',
        as: 'users',
      },
    },
    {
      // remove empty groups
      $match: { users: { $exists: true, $ne: [] } },
    },
    {
      // promote each user to a new document
      $unwind: '$users',
    },
    {
      $sort: {
        _id: 1,
      },
    },
    {
      $replaceRoot: { newRoot: '$users' },
    },
  ]);

  return connectionFromMongoAggregate({
    aggregate,
    context,
    args,
    loader: load,
  });
};
```

## 常见问题

### @entria/graphql-mongoose-loader 是什么？

图形QL Mongoose 加载器助手

### 如何安装 @entria/graphql-mongoose-loader？

在项目目录运行 npm install @entria/graphql-mongoose-loader，或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖：graphql（\*）、mongoose（\*）、graphql-relay（\*）。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖，Yarn 需要手动安装。

### @entria/graphql-mongoose-loader 支持 TypeScript 吗？

支持。包内自带 TypeScript 类型声明（package\.json 声明了 types 入口），安装后即可获得类型提示，无需再安装 @types 包。

### @entria/graphql-mongoose-loader 支持 ESM 还是 CommonJS？

同时提供 ES Module 与 CommonJS 入口，import 和 require\(\) 都可以使用，打包工具会自动选择合适的版本。

### @entria/graphql-mongoose-loader 可以商用吗？

@entria/graphql-mongoose-loader 使用 MIT 许可。宽松许可：允许商业使用、修改和再分发，通常只需在分发时保留原版权与许可声明。以上为概括，不构成法律意见，请以许可原文为准。

### @entria/graphql-mongoose-loader 的下载量有多少？

根据 npm 官方下载统计，@entria/graphql-mongoose-loader 在 2026/10/14 – 2026/11/12 这 30 天内被下载 2,476 次，日均约 83 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### @entria/graphql-mongoose-loader 还在维护吗？

最新版本 4\.4\.0 发布于 2022/01/15（4 年前）；至今共发布 29 个版本，其中过去 12 个月发布了 0 个；首次发布于 2017/06/22。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

