Nestjs Mongodb 总是返回空数组
Posted
技术标签:
【中文标题】Nestjs Mongodb 总是返回空数组【英文标题】:Nestjs Mongodb always return empty array 【发布时间】: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();
【问题讨论】:
【参考方案1】:在我的情况下,问题是我没有在 app.module.ts 中提供数据库名称,我只将 URI 传递给了 mongodb 集群(不确定命名,如果我错了,请纠正我),并且每次运行服务器时,它都会在集群上创建一个“测试”数据库(带有空集合,因此是空数组),您可以在 MongoDB Compass 中看到它。 nestJS 文档也不提供数据库名称。
【讨论】:
【参考方案2】:如果您的架构类名称是User
,那么实际的集合名称应该是users
,而不是user
。 Mongoose 会在降低字符后在类名中附加一个 's'。
【讨论】:
您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center。以上是关于Nestjs Mongodb 总是返回空数组的主要内容,如果未能解决你的问题,请参考以下文章