您将如何使用 mongoose 有条件地嵌入子文档

问题描述

我有一个名为“permitSchema”的父架构。根据我的 UI 中包含“ISO_Needed”、“EIC_Needed”、“Box_Needed”和多达 20 多个其他选项的多选,我需要插入每种类型的嵌套文档(ISO、EIC、Box 等)取决于该选项是否包含在我的证书数组中?请记住,我将为任何给定的架构定义验证。

const mongoose = require('mongoose');

const ISOScheme = require("../certificates/certificateISO"); 
const EICScheme = require("../certificates/certificateEIC");
const BoxScheme = require("../certificates/certificateEIC");
// above schemas have different properties

const permitSchema = new mongoose.Schema({
    jobDescription: {type: String,required: true},jobNumber: {type: String,ISO: ISOScheme,// dependent on if "ISO_Needed" is included in my "Certificates_Needed" array
    EIC: EICScheme,//  dependent on if "EIC_Needed" is included in my "Certificates_Needed" array
    Box: BoxScheme  // dependent on if "Box_Needed" is included in my "Certificates_Needed" array
... 20+ etc.

)};

const PermitPack = mongoose.model('permitPack',permitSchema);

exports.PermitPack = PermitPack;

以上所有内容都将接受验证,但仅在需要时根据多选(“Certificates_Needed”数组)中选择的选项进行说明。

我看过直接嵌入,但如果说有验证问题,只定义了“Box_Needed”。它在验证其他模式时失败(所有模式都有自己的验证)。

我还查看了 mongoose 鉴别器选项,但似乎找不到任何好的最新的、易于遵循的示例,可以在节点、express.js、MongoDB 上下文中使用它。我还需要一个关于如何发布这些数据的 json 示例(邮递员)。特别是当 __t 被定义为“kind”或 discriminatorKey 时。我遇到的所有示例都没有显示“POST”应该是什么样子。

这个游戏还是比较新的,所以感谢任何帮助或指示。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)