【问题标题】:Dynamic Form creation. How to save the data type动态表单创建。如何保存数据类型
【发布时间】:2019-08-19 20:42:42
【问题描述】:

我让用户为名为“站点”的东西创建表单。

var mongoose = require("mongoose");

var siteSchema = new mongoose.Schema({
    Site_Name:  String,
    Site_Description: String
},{ strict: false });

module.exports = mongoose.model("site", siteSchema);

目前只有两个必填字段。

用户可以使用表单并创建新字段,这些字段会像这样保存在 MongoDB 中。

{
    "_id" : ObjectId("5d435a512a17af5b0468c56a"),
    "fieldname" : "Site City",
    "fieldtype" : "String",
    "fieldinputtype" : "Text Box",
    "sitecatname" : "Location",
    "fieldorder" : 20,
    "__v" : 0
}

我根据这个集合中的这些信息生成一个表单。

问题是它以“字符串”数据类型保存所有数据。

如何强制使用其他数据类型?喜欢数字还是日期?

感谢您的宝贵时间!

【问题讨论】:

    标签: node.js mongodb express mongoose mongoose-schema


    【解决方案1】:

    您可以在架构本身中定义数据类型。

    var siteSchema = new mongoose.Schema({
        Site_Name:  {type: String},
        Site_Description: {type: String}        
    },{ strict: false });
    

    所以,如果你想分配任何其他数据(如数字)类型,那么:

    {type: Number}
    

    【讨论】:

    • 对不起。如何强制表单上的数据类型?我无法编辑模型,因为表单是动态创建的,我事先不知道每个字段的类型。
    • 然后,您可以将架构中该字段的数据类型声明为混合:{type: Schema.Types.Mixed} 这将保存您将传递的任何数据类型给它。这用于您事先不知道每个字段的类型时的目的。
    • Jaspreet - 我不知道要输入哪些字段,Site_name 和 Site_Description 是必填字段。其他的由用户创建,表单是动态生成的。当用户选择日期字段时,如何将该字段保存为数据库中的日期字段
    猜你喜欢
    • 2023-03-08
    • 1970-01-01
    • 2011-07-17
    • 1970-01-01
    • 2021-11-23
    • 1970-01-01
    • 2014-05-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多