创建 NestFactory 后如何将 mongoose 插件设置为模式
Posted
技术标签:
【中文标题】创建 NestFactory 后如何将 mongoose 插件设置为模式【英文标题】:How to set mongoose plugin to a schema after creating NestFactory 【发布时间】:2020-01-26 07:02:34 【问题描述】:我正在使用nest,我需要在设置猫鼬插件之前调用另一个服务来获取密钥,我尝试在main.ts
中初始化猫鼬插件,但它不起作用,下面是我的做了
import Document from 'mongoose';
export class TestSchema extends Document
readonly test: String;
init.schema.ts
export const initMongoosePlugin = () =>
TestSchema.plugin(plugin,
fields: ['test'],
secret: global['KEY'], // init it in main.ts
);
;
main.ts
async function bootstrap()
const app = await NestFactory.create(AppModule);
const appService: AppService = app.get(AppService);
global['KEY'] = await appService.getKey();
// init Mongoose Plugin
initMongoosePlugin();
app.use(requestIp.mw());
await app.listen(3000));
bootstrap();
【问题讨论】:
你在使用来自Nest
的MongooseModule
吗?
是的,我正在使用来自 @nestjs/mongoose 的 MongooseModule
然后当 main.ts 运行时,MongooseModule 已经用它的所有模型(forFeature)初始化,你可以使用 app.get 来获取你需要的模型,然后从模型中获取模式在架构上设置插件
看起来很棒!你能用一些示例代码回答这个问题吗?
我会尝试把一些东西放在一起
【参考方案1】:
你得到错误还是没有设置?您是否尝试从注入模式的服务构造函数中调用它? 但是我使用以下内容在 mongodb 中定义模式
import Schema from 'mongoose';
export const TestSchema = new Schema(
test: String;
);
【讨论】:
以上是关于创建 NestFactory 后如何将 mongoose 插件设置为模式的主要内容,如果未能解决你的问题,请参考以下文章
从 MySQL 到 Mongo 数据导出:如何保存创建日期?