Jos*_*aza 4 mongoose node.js typescript nestjs
我有一个问题,我无法使用 Mongoose 获取 2 个模式之间的关系,我是使用它的新用户,我使用的是 NestJS,这是一个使用 TypeScript 的 NodeJS 框架。
我有这些文件:
user.schema.ts
import * as mongoose from 'mongoose';
export const UserSchema = new mongoose.Schema({
name: String,
email: String,
role: Number,
tokens: [{ type: mongoose.Schema.Types.ObjectId, ref: 'Token'}]
});
Run Code Online (Sandbox Code Playgroud)
token.schema.ts
import * as mongoose from 'mongoose';
export const TokenSchema = new mongoose.Schema({
token: String,
refreshToken: String,
createdAt: String,
expiresAt: String,
isValid: Boolean,
userId: [{ type: mongoose.Schema.Types.ObjectId, ref: 'User'}]
});
Run Code Online (Sandbox Code Playgroud)
因此,关系已创建,我可以看到它,但我不知道如何获取 User 架构的子项。在我的 ts 我有这个:
await this.userModel.find().populate('user', 'tokens').exec()
Run Code Online (Sandbox Code Playgroud)
据我所知,这是为了获得两个模式之间的关系。顺便说一句:集合是用户和令牌。
我将不胜感激任何反馈或如果我必须说清楚。
我已经通过这种方式解决了一对多关系的问题:
包.json:
"@nestjs/mongoose": "7.0.2"
"mongoose": "^5.10.14"
Run Code Online (Sandbox Code Playgroud)
举个例子,我将使用这个问题(User和Token)中的模式:
Token模式"@nestjs/mongoose": "7.0.2"
"mongoose": "^5.10.14"
Run Code Online (Sandbox Code Playgroud)
Token架构添加到TokenModuleimport { Prop, Schema, SchemaFactory } from '@nestjs/mongoose';
import { Document, Types } from 'mongoose';
@Schema({_id: false})
export class Token {
@Prop({type: Types.ObjectId})
_id: Types.ObjectId;
@Prop()
token: string;
@Prop()
refreshToken: string;
@Prop()
createdAt: Date; // You can use Date here.
@Prop()
expiresAt: Date;
@Prop()
isValid: boolean;
}
export const TokenSchema = SchemaFactory.createForClass(Token);
Run Code Online (Sandbox Code Playgroud)
User模式import { MongooseModule } from '@nestjs/mongoose';
@Module({
imports: [
MongooseModule.forFeature([
{ name: Token.name, schema: TokenSchema },
]),
],
// ...
})
export class TokenModule {}
Run Code Online (Sandbox Code Playgroud)
User架构添加到UserModuleimport { Prop, Schema, SchemaFactory } from '@nestjs/mongoose';
import { Document, Types } from 'mongoose';
export type UserDocument = User & Document;
@Schema({_id: false})
export class User {
@Prop({type: Types.ObjectId})
_id: Types.ObjectId;
@Prop()
name: string;
@Prop()
email: string;
@Prop()
role: number;
@Prop(type: [Types.ObjectId], ref: Token.name)
tokens: Token[];
}
export const UserSchema = SchemaFactory.createForClass(User);
Run Code Online (Sandbox Code Playgroud)
populate函数中使用UserServiceimport { MongooseModule } from '@nestjs/mongoose';
@Module({
imports: [
MongooseModule.forFeature([
{ name: User.name, schema: UserSchema },
]),
],
// ...
})
export class UserModule {}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4968 次 |
| 最近记录: |