我有一个JSON对象,该对象最多三个层次,每个层次都是一个单独的文档模型。
我一直在尝试将该对象用作模板,并逐步进行遍历,并将其返回并返回_id
。我尝试了几种循环方法,并提出了基于承诺的方法,但是结果却很复杂。
任何建议都会很棒。
这是一个Node.js应用,并使用Mongoose软件包进行建模。
// tslint:disable-next-line: one-variable-per-declaration
export const x = {
title: "a title",
startDate: "a date time string",
__type: "programmeModel",
modules: [
{
name: "a module name",
startDate: "a string",
endDate: "a string",
__type: "moduleModel",
activities: [
{
type: "a string",
description: "a string",
__type: "ActivityModule"},
{
type: "a string",
description: "a string",
__type: "ActivityModule"
},
{
type: "a string",
description: "a string",
__type: "ActivityModule"
},
]},
{
name: "a module name",
startDate: "a string",
endDate: "a string",
activities: []
},
{
name: "a module name",
startDate: "a string",
endDate: "a string",
activities: [
{
type: "a string",
description: "a string",
__type: "ActivityModule"
},
{
type: "a string",
description: "a string",
__type: "ActivityModule"
},
{
type: "a string",
description: "a string",
__type: "ActivityModule"
},
]},
]
};
当我使用区分符将所有文档保存在单个集合/数据库中时,模型包含一个__type
字段。
const ProgrammeSchema: Schema = new Schema({
_id: Schema.Types.ObjectId,
title: {
type: String,
required: true,
default: "",
},
subtitle: {
type: String,
required: false,
default: "",
},
organizationId: {
type: Number,
required: false,
},
published: {
type: Boolean,
required: true,
default: false,
},
startDate: Date,
endDate: Date,
modules: [{ type: Schema.Types.ObjectId, ref: "ModuleModel" }],
});
const ModuleSchema: Schema = new Schema({
_id: Schema.Types.ObjectId,
title: {
type: String,
required: true,
default: "",
},
subtitle: {
type: String,
required: false,
default: "",
},
startDate: {
type: Date,
required: false,
},
endDate: {
type: Date,
required: false,
},
active: {
type: Boolean,
default: true,
},
imageUrl: {
type: String,
required: false,
},
activities: [{ type: Schema.Types.ObjectId, ref: "ActivityModel" }],
});
const ActivitySchema: Schema = new Schema({
_id: Schema.Types.ObjectId,
title: {
type: String,
required: true,
default: "",
},
subtitle: {
type: String,
required: false,
default: "",
},
description: {
type: String,
required: false,
default: "",
},
startDate: {
type: Date,
required: false,
},
endDate: {
type: Date,
required: false,
},
imageUrl: {
type: String,
required: false,
default: "",
},
});
回顾一下,我一直在尝试保留程序,模块和活动的JSON对象。任何建议都很好。