所以我有一个例子,我想保存一个对象作为一个json字符串到数据库
但是每次都出现错误和警告,因为模型不是设置为字符串就是设置为对象
我需要两个不同的模型来发布和获取吗?或者有更优雅的方法来处理这类问题?
这就是我现在的编码方式
@Get("/")
@Summary("Return List Of blogs")
@Returns(200, Array)
async getAll(@QueryParams() blogFilter: any) {
return await this.service.findMany(blogFilter)
}
@Post("/")
@Summary("Create New Blog")
@Returns(201, BlogModel)
async create(@BodyParams() @Groups("creation") blog: BlogModel): Promise<BlogModel> {
// @ts-ignore
blog.content = JSON.stringify(await this.mediaService.contentMediaConvert(blog.content));
return await this.service.create(blog);
}
博客内容应该是前端的一个对象,但保存为JSON字符串以节省空间
这是我现在的模型
export class BlogModel {
@ObjectID("id")
_id: string;
@Property()
@Required()
@Lowercase()
title: string;
@Property()
@Lowercase()
slug: string;
@Property()
@Any()
content: object;
@Property()
@Ref(CategoryModel)
category: Ref<CategoryModel>
@Property()
@Default(0)
views: number;
@Property()
@Required()
@Ref(UserModel)
createdBy: Ref<UserModel>;
@Property()
@Required()
@Ref(MediaModel)
thumbnail: Ref<MediaModel>;
@Property()
@Default("BLOG")
@Enum(pageType)
pageType: pageType
}
我不擅长面向对象抱歉
1条答案
按热度按时间5kgi1eie1#
这个问题不够清楚,不能理解这个问题。如果你能把错误信息和服务界面也贴出来会有帮助。但是我可以对我所看到的发表一些评论。
我需要两种不同的模型来发布和获取吗
不,这不是必需的。您可以使用一个模型进行POST和GET。
问题可能来自
JSON.stringify
。service.create
很可能使用Object而不是string作为参数。因此,在理想情况下,这应该是this.service.create(await this.mediaService.contentMediaConvert(blog.content))
其他一些与您的问题无关的评论:
@QueryParams() blogFilter: any
。不要使用any
,尝试定义类似class BlogFilterQuery
的内容1.在
return
上不需要await
1.尽量避免使用JSON字符串。有一些模块可以帮助你在JSON和类示例之间进行转换。例如,
class-transfromer
。希望这能有所帮助,