Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 仅包括与另一路径的值相关的Mongoose模式的路径_Node.js_Mongoose_Schema_Mongoose Schema - Fatal编程技术网

Node.js 仅包括与另一路径的值相关的Mongoose模式的路径

Node.js 仅包括与另一路径的值相关的Mongoose模式的路径,node.js,mongoose,schema,mongoose-schema,Node.js,Mongoose,Schema,Mongoose Schema,假设我有这样一个模式: 模式({ 用户名:String, 特权:{ 类型:字符串, 枚举:[“管理员”、“专业”、“用户”、“来宾”], 必填项:false, 默认值:“用户” }, 标记类型:{//一个小标记,显示在站点上用户名旁边。 ///??? } }); 对于tagType,如果privilege是admin,我希望能够定义如下内容: { color: String, image: String, text: { type: String,

假设我有这样一个模式:

模式({
用户名:String,
特权:{
类型:字符串,
枚举:[“管理员”、“专业”、“用户”、“来宾”],
必填项:false,
默认值:“用户”
},
标记类型:{//一个小标记,显示在站点上用户名旁边。
///???
}
});
对于
tagType
,如果
privilege
admin
,我希望能够定义如下内容:

{
    color: String,
    image: String,
    text: {
        type: String,
        required: true,
        enum: ["I'm the highest rank", "I'm an admin", "Admin privileges are great"]
    },
    dateAdded: Date
}
同时,如果
privilege
pro

{
    color: String,
    text: {
        type: String,
        required: false,
        enum: ["This website is great", "I'm am a Pro user", "I get a nice tag!"],
        default: "This website is great"
    },
    dateAdded: Date
}
同时,对于所有
用户
来宾
条目,不允许有任何选项


这种动态交叉检查可能吗?我已经试着通读了,但尽管其中的内容似乎复杂得多,但我找不到任何方法来实现这一点。

您可以使用

使用此模型和架构,您可以创建标记类型为的用户,它将被忽略

创建用户的示例代码:

const User = require("../models/user");

router.post("/user", async (req, res) => {
  let result = await User.create(req.body);
  res.send(result);
});
请求主体样本:

{
    "username": "user 1",
    "tagType": {
        "color": "red",
        "text": "I'm an admin"
    }
}
答复:

{
    "privilege": "user",
    "_id": "5dfa07043a20814f80d60d6b",
    "username": "user 1",
    "__v": 0
}
创建管理员的请求示例:(注意,我们添加了
“特权”:“admin”

响应:(注意标记类型已保存)


谢谢你的回答和解释!
{
    "privilege": "user",
    "_id": "5dfa07043a20814f80d60d6b",
    "username": "user 1",
    "__v": 0
}
{
    "username": "admin 1",
    "privilege": "admin",
    "tagType": {
        "color": "red",
        "text": "I'm an admin"
    }
}
{
    "_id": "5dfa07a63a20814f80d60d6d",
    "privilege": "admin",
    "username": "admin 1",
    "tagType": {
        "color": "red",
        "text": "I'm an admin",
        "dateAdded": "2019-12-18T11:04:06.461Z"
    },
    "__v": 0
}