【发布时间】:2021-12-10 14:16:26
【问题描述】:
我正在尝试创建一个连接到 mongodb 的简单 nestjs 项目。我关注了官方documentation of nestjs,但使用“用户”集合连接到我自己的数据库。 当我尝试调用端点 findAll 用户时,结果始终为空,即使 db 包含记录。
知道是什么导致了这个问题吗?
// user.schema.ts
import { Prop, Schema, SchemaFactory } from '@nestjs/mongoose';
import { Document } from 'mongoose';
export type UserDocument = User & Document;
export class Credential {
@Prop()
username: string;
@Prop()
password: string;
}
export class NameDetails {
@Prop()
firstName: string;
@Prop()
lastName: string;
}
export class ContactDetails {
@Prop()
email: string;
@Prop()
phoneNumber: string;
}
@Schema()
export class User extends Document {
@Prop()
_id: string;
@Prop()
credential: Credential;
@Prop()
nameDetails: NameDetails;
@Prop()
contactDetails: ContactDetails;
}
export const UserSchema = SchemaFactory.createForClass(User);
// users.module.ts
import { Module } from '@nestjs/common';
import { UsersService } from './users.service';
import { UsersController } from './users.controller';
import { MongooseModule } from '@nestjs/mongoose';
import { User } from './entities/user.entity';
import { UserSchema } from 'src/schemas/user.schema';
@Module({
imports: [MongooseModule.forFeature([{ name: User.name, schema: UserSchema }])],
controllers: [UsersController],
providers: [UsersService]
})
export class UsersModule {}
// users.service.ts
import { Injectable } from '@nestjs/common';
import { InjectModel } from '@nestjs/mongoose';
import { Model } from 'mongoose';
import { User, UserDocument } from 'src/schemas/user.schema';
@Injectable()
export class UsersService {
constructor(@InjectModel(User.name) private userModel: Model<UserDocument>) {}
async findAll(): Promise<User[]> {
return await this.userModel.find().exec();
}
}
【问题讨论】:
标签: node.js mongodb mongoose nestjs