node.js - 在 mongoose Schema 文件 Nestjs 中使用进程 env

标签 node.js mongoose nestjs

我需要根据一个环境变量更改 Mongoose Schema 中一个属性的默认值,但是当我尝试访问 process.env.NAME 时我得到的是未定义的值,而不是我的 .env 中的值文件。我的模式中有这个

import { Prop, Schema, SchemaFactory } from '@nestjs/mongoose';
import { Document } from 'mongoose';

export type PetDocument = Pet & Document;

@Schema()
export class Pet {
  @Prop({ default: process.env.NAME })
  name: string;

  @Prop()
  age: number;

  @Prop()
  breed: string;
}

export const PetSchema = SchemaFactory.createForClass(Pet);

这是我的宠物模块

import { Module } from '@nestjs/common';
import { ConfigModule } from '@nestjs/config';
import { MongooseModule } from '@nestjs/mongoose';
import { PetsService } from './pets.service';
import { Pet, PetSchema } from './schema/pets.schema';

@Module({
  imports: [
    ConfigModule,
    MongooseModule.forFeatureAsync([
      {
        name: Pet.name,
        useFactory: () => PetSchema,
      },
    ]),
  ],
  providers: [PetsService],
})
export class PetsModule {}

这是我的应用程序模块

import { Module } from '@nestjs/common';
import { ConfigModule } from '@nestjs/config';
import { MongooseModule } from '@nestjs/mongoose';
import { AppController } from './app.controller';
import { AppService } from './app.service';
import { PetsModule } from './pets/pets.module';

@Module({
  imports: [
    ConfigModule.forRoot({
      isGlobal: true,
    }),
    MongooseModule.forRootAsync({
      useFactory: () => ({
        uri: process.env.DB_URI,
      }),
    }),
    PetsModule,
  ],
  controllers: [AppController],
  providers: [AppService],
})
export class AppModule {}

如何获取架构文件中的值而不是未定义的值?

最佳答案

您需要包含 dotenv 包来读取架构文件顶部的 .env 文件。如果您还没有安装 dotenv 包,请先安装:npm i dotenv

require('dotenv').config();
import { Prop, Schema, SchemaFactory } from '@nestjs/mongoose';
import { Document } from 'mongoose';

export type PetDocument = Pet & Document;

@Schema()
export class Pet {
  @Prop({ default: process.env.NAME }) // shouldn't be undefined anymore

.......

关于node.js - 在 mongoose Schema 文件 Nestjs 中使用进程 env,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72734324/

相关文章:

arrays - 如何使用 Node.js 驱动程序在 mongoDB 中多次插入数组?

node.js - 安装移动优先开发套件和迁移帮助的正确 Node js 版本是多少

mongodb - 使用带有 id 内部聚合 mongodb 的数组上的 where

javascript - Nestjs 日志响应数据对象

typescript - Nx-NestJS-TypeOrm : SyntaxError: Unexpected token {

typescript - 在从命令行运行的 NestJS 脚本中使用服务

node.js - 使用 IISNode 将使用 Loopback.io 生成的 API 托管到 Azure

node.js - 在Lua中将Redis数据转换为json

node.js - Mongoose 使用 $lookup 包含辅助文档中的字段

node.js - 构建我的 Mongoose 模式 : embedded array , 填充的最佳方法,子文档?