# @apricote/nest-pg-boss 中文文档

规范地址：https://npmcn.com/package/%40apricote/nest-pg-boss/

版本：2\.1\.0
npm 元数据更新时间：2023-09-16T10:06:07.117Z
中文译文更新时间：2026-11-06T12:47:11.561Z
软件包许可：MIT

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

原始 npm 页面：https://www.npmjs.com/package/%40apricote/nest-pg-boss
原文对照：https://npmcn.com/package/%40apricote/nest-pg-boss/?lang=original
项目主页：https://github.com/apricote/nest-pg-boss#readme
源码仓库：https://github.com/apricote/nest-pg-boss

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

- 包体积（解压后）：144 kB，37 个文件
- 模块格式：CommonJS
- TypeScript 类型：包内自带
- 运行依赖：0 个
- peer 依赖：@nestjs/common ^9\.3\.3 \|\| ^10\.0\.0，@nestjs/core ^9\.3\.3 \|\| ^10\.0\.0，pg-boss ^8\.4\.1 \|\| ^9\.0\.0，reflect-metadata ^0\.1\.13，rxjs ^7\.2\.0
- 首次发布：2023-03-06T08:17:02.194Z
- 最新版本发布：2023-09-16T10:06:06.947Z
- 近 30 天下载量：53689（2026-10-07 至 2026-11-05，npm 官方下载统计）
- 已发布版本数：6（近 12 个月 0 个）

## 中文简介

在您的 NestJS 应用程序中使用 pg- boss

## 安装

```sh
npm install @apricote/nest-pg-boss
```

也可以使用：`pnpm add @apricote/nest-pg-boss`、`yarn add @apricote/nest-pg-boss`、`bun add @apricote/nest-pg-boss`

## README

# `@apricote/nest-pg-boss`

使用 [pg -boss (英语)](https://github.com/timgit/pg-boss) 在你的巢穴服务!

[![NPM Version](https://img.shields.io/npm/v/@apricote/nest-pg-boss.svg)](https://www.npmjs.com/package/@apricote/nest-pg-boss) [![Package License](https://img.shields.io/npm/l/@apricote/nest-pg-boss.svg)](https://www.npmjs.com/package/@apricote/nest-pg-boss) [![NPM Downloads](https://img.shields.io/npm/dm/@apricote/nest-pg-boss.svg)](https://www.npmjs.com/package/@apricote/nest-pg-boss) [![CI Status](https://img.shields.io/github/actions/workflow/status/apricote/nest-pg-boss/ci.yaml?branch=main)](https://github.com/apricote/nest-pg-boss/actions?query=workflow%3A%22CI%22)

## 安装

```bash
npm install @apricote/nest-pg-boss
```

## 使用量

### 设置

开始使用 `@apricote/nest-pg-boss`,初始化根模块:

```ts
import { PGBossModule } from "@apricote/nest-pg-boss";

// app.module.ts
@Module({
  imports: [
    PGBossModule.forRootAsync({
      application_name: "default",
      useFactory: (config: ConfigService) => ({
        // Connection details
        host: config.get<string>("DB_HOST"),
        user: config.get<string>("DB_USERNAME"),
        password: config.get<string>("DB_PASSWORD"),
        database: config.get<string>("DB_DATABASE"),
        schema: "public",
        max: config.get<number>("DB_POOL_MAX"),
      }),
      inject: [ConfigService],
    }),
  ],
})
export class AppModule {}
```

对于可用的设置列表,请检查 [pg -boss 文档](https://github.com/timgit/pg-boss/blob/master/docs/readme.md#newoptions)。 。 。 .

### 工作

```typescript
// jobs.ts
import { createJob } from "@apricote/nest-pg-boss"

interface IFoobarJobData {
  foo: string
  bar: boolean
}

const FoobarJob = createJob<IFoobarJobData>("foobar")
```

#### 创建新工作

```typescript
// module.ts
import { PGBossModule } from "@apricote/nest-pg-boss";
import { FoobarService } from "./service.ts";

@Module({
  imports: PGBossModule.forJobs([FoobarJob]),
  providers: [FoobarService]
})
class FoobarModule {}

```

```typescript
// service.ts
import { JobService } from "@apricote/nest-pg-boss";
import { FoobarJob, IFoobarJobData } from "./jobs.ts";

@Injectable()
class FoobarService {
  constructor(
    @FoobarJob.Inject()
    private readonly foobarJobService: JobService<IFoobarJobData>,
  ) {}

  async sendJob() {
    await this.foobarJobService.send({ foo: "oof", bar: true }, {});
  }
}
```

#### 进程任务

工作可以通过使用 `@FoobarJob.Handle()` 装饰师.

```typescript
// service.ts
@Injectable()
class FoobarService {
  /* ... */

  @FoobarJob.Handle()
  async handleJob(job: Job<FoobarJobData>) {
    // do something
  }
}
```

您可以选择通过对象 [工作选项](https://github.com/timgit/pg-boss/blob/1f541263a906781efaf607f539340c9609db77df/types.d.ts#L119) 改为 `.Handle()`数字 :

```typescript
@FoobarJob.Handle({ teamSize: 10, teamConcurrency: 2 })
```

## 测试

```bash
# unit tests
$ npm run test

# e2e tests
$ npm run test:e2e

# test coverage
$ npm run test:cov
```

## 许可证

`@apricote/nest-pg-boss` 实值 [麻省理工学院执照](https://npmcn.com/package/%40apricote/nest-pg-boss/LICENSE)。 。 。 .

## 常见问题

### @apricote/nest-pg-boss 是什么？

在您的 NestJS 应用程序中使用 pg- boss

### 如何安装 @apricote/nest-pg-boss？

在项目目录运行 npm install @apricote/nest-pg-boss，或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖：@nestjs/common（^9\.3\.3 \|\| ^10\.0\.0）、@nestjs/core（^9\.3\.3 \|\| ^10\.0\.0）、pg-boss（^8\.4\.1 \|\| ^9\.0\.0）、reflect-metadata（^0\.1\.13）、rxjs（^7\.2\.0）。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖，Yarn 需要手动安装。

### @apricote/nest-pg-boss 支持 TypeScript 吗？

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

### @apricote/nest-pg-boss 支持 ESM 还是 CommonJS？

以 CommonJS 形式发布，可以直接 require\(\)；在 ES Module 项目中也可以用 import 引入（Node\.js 会把 module\.exports 作为默认导出）。

### @apricote/nest-pg-boss 可以商用吗？

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

### @apricote/nest-pg-boss 的下载量有多少？

根据 npm 官方下载统计，@apricote/nest-pg-boss 在 2026/10/07 – 2026/11/05 这 30 天内被下载 53,689 次，日均约 1,790 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### @apricote/nest-pg-boss 还在维护吗？

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

