问题描述
我是 nestJS 和 Mongo 的新手。我正在定义方案,并试图获取相关集合的数据。我遵循了 here 中的示例,但我不明白为什么在我的代码中不起作用。我在 StackOverflow 中看到了另一个例子,但没有成功。
我得到了什么:
[
{
"songs": [],"_id": "6066d3783b1f96201a62372a","name": "The best album","year": 2021,"image": "cover"
}
]
我想得到的:
[
{
"songs": [
{
"_id": "6066d3e13b1f96201a62372b","name": "Song1"
},{
"_id": "6066d46a3b1f96201a62372c","name": "Song2"
},],"image": "cover"
}
]
相册文档
{
"_id": {
"$oid": "6066d3783b1f96201a62372a"
},"year": {
"$numberInt": "2021"
},"image": "cover"
}
歌曲文档
{
"_id": {
"$oid": "6066d3e13b1f96201a62372b"
},"name": "Song1","album": {
"$oid": "6066d3783b1f96201a62372a"
}
},{
"_id": {
"$oid": "6066d46a3b1f96201a62372c"
},"name": "Song2","album": {
"$oid": "6066d3783b1f96201a62372a"
}
}
album.module.ts
import { Module } from '@nestjs/common';
import { AlbumsController } from './albums.controller';
import { AlbumsService } from './albums.service';
import { MongooseModule } from '@nestjs/mongoose';
import { Album,AlbumSchema } from './schemas/album.schema';
@Module({
imports: [MongooseModule.forFeature([{ name: Album.name,schema: AlbumSchema }])],controllers: [AlbumsController],providers: [AlbumsService],})
export class AlbumModule {}
albums.controller.ts
import { Controller,Get,HttpStatus,Res } from '@nestjs/common';
import { AlbumsService } from './albums.service';
@Controller('albums')
export class AlbumsController {
constructor(private readonly albumsService: AlbumsService) {}
@Get()
async getAlbums(@Res() res) {
const albums = await this.albumsService.getAlbums();
return res.status(HttpStatus.OK).json(albums);
}
}
albums.service.ts
import { Model } from 'mongoose';
import { Injectable } from '@nestjs/common';
import { InjectModel } from '@nestjs/mongoose';
import { Album,AlbumDocument } from './schemas/album.schema';
@Injectable()
export class AlbumsService {
constructor(@InjectModel(Album.name) private albumModel: Model<AlbumDocument>) {}
async getAlbums(): Promise<Album[]> {
return this.albumModel.find().populate('songs').exec();
}
}
album.schema.ts
import { Prop,Schema,SchemaFactory } from '@nestjs/mongoose';
import { Song } from './song.schema';
import { Document,Types } from 'mongoose';
import * as mongoose from 'mongoose';
export type AlbumDocument = Album & Document;
@Schema()
export class Album {
@Prop()
name: string;
@Prop()
year: number;
@Prop()
image: string;
@Prop([{ type: mongoose.Schema.Types.ObjectId,ref: 'Song' }])
songs: Song[];
}
export const AlbumSchema = SchemaFactory.createForClass(Album);
song.schema.ts
import { Prop,SchemaFactory } from '@nestjs/mongoose';
import { Album } from './album.schema';
import { Document } from 'mongoose';
import * as mongoose from 'mongoose';
export type SongDocument = Song & Document;
@Schema()
export class Song {
@Prop()
name: string;
@Prop({ type: mongoose.Schema.Types.ObjectId,ref: 'Album' })
album: Album;
}
export const SongSchema = SchemaFactory.createForClass(Song);
提前致谢。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)