gpt4 book ai didi

mongodb - 使用 mongoose 并利用我已经定义的 schmas 在 NestJS 中做种子 mongoDB 的正确方法是什么

转载 作者:搜寻专家 更新时间:2023-10-30 21:56:03 25 4
gpt4 key购买 nike

我们将 NestJS 与 mongoose 一起使用,并希望为 mongoDB 做种。想知道为数据库播种的正确方法是什么,并使用已经定义的数据库模式来确保播种的数据有效并得到妥善维护。

在模块级别(就在模块定义之前)播种感觉很糟糕,并以线程池被破坏而告终,因此所有后续的 mongo 操作都失败了

最佳答案

我已经像那样使用了 nestjs-command 库。

1。安装库:

https://www.npmjs.com/package/nestjs-command

2。然后我创建了一个命令来为我的 userService 播种:

src/modules/user/seeds/user.seed.ts

import { Command, Positional } from 'nestjs-command';
import { Injectable } from '@nestjs/common';

import { UserService } from '../../../shared/services/user.service';

@Injectable()
export class UserSeed {
constructor(
private readonly userService: UserService,
) { }

@Command({ command: 'create:user', describe: 'create a user', autoExit: true })
async create() {
const user = await this.userService.create({
firstName: 'First name',
lastName: 'Last name',
mobile: 999999999,
email: 'test@test.com',
password: 'foo_b@r',
});
console.log(user);
}
}

3。将该种子命令添加到您的模块中。我在共享文件夹中创建了一个 SeedsModule,以便将来添加更多种子

src/shared/seeds.module.ts

import { Module } from '@nestjs/common';
import { CommandModule } from 'nestjs-command';

import { UserSeed } from '../modules/user/seeds/user.seed';
import { SharedModule } from './shared.module';

@Module({
imports: [CommandModule, SharedModule],
providers: [UserSeed],
exports: [UserSeed],
})
export class SeedsModule {}

顺便说一句,我正在将我的 userService 导入我的 SharedModule

4。将 SeedsModule 添加到您的 AppModule

在您的 AppModule 上,通常在 src/app.module.ts 添加 SeedsModule 到 imports

决赛

如果您按照 nestjs-command 存储库中的步骤进行操作,您应该能够运行

npx nestjs-command create:user

这将引导一个新的应用程序并运行该命令,然后播种到您的 mongo/mongoose

希望对其他人也有帮助。

关于mongodb - 使用 mongoose 并利用我已经定义的 schmas 在 NestJS 中做种子 mongoDB 的正确方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56103518/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com