我需要根据一个环境变量更改 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/