@entria/graphql-mongoose-loader

中文文档
4.4.0发布于 2022/01/15MITTypeScriptESM + CJS零依赖近 30 天下载 2476

图形QL Mongoose 加载器助手

中文使用文档
文档目录4 节
  1. 安装
  2. Mongoose 数据装入器批次
  3. 从 Mongoose 光标连接
  4. 从 Mongoose 总和连接

图形QL Mongoose 加载器 CircleCI

安装

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

Mongoose 数据装入器批次

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

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

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);

为它创建数据载入器

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

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

从 Mongoose 光标连接

从 mongoose 光标创建连接

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 聚合创建连接

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 共发布 29 个版本,首次发布于 2017/06/22;过去 12 个月发布了 0 个版本。

版本发布日期距今
4.4.0latest2022/01/154 年前
4.3.22020/06/236 年前
4.3.12020/06/186 年前
4.3.02019/11/206 年前
4.2.02019/08/087 年前
4.1.02019/07/157 年前

关于 @entria/graphql-mongoose-loader 的常见问题

@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 和提交记录判断。