首页 > 解决方案 > 如何为 Nodejs 中的 Google 表单等问卷应用程序创建猫鼬模式

问题描述

我在nodejs中创建一个应用程序,我希望用户创建自己的文本字段,类似于谷歌表单中的文本字段,例如,我创建第一个字段作为名称,下一个字段作为年龄也是一个文本字段,第三个作为性别下拉菜单也包含标题以及下拉选项。

我的问题是如何构建 mongoose 数据库模式来保存这些信息。在给定时存储字段名称和输入。

另外我该如何为下拉菜单执行该操作。

const mongoose = require('mongoose')
const questionaireSchema = new mongoose.Schema({

  author: {
    type: mongoose.Schema.ObjectId,
    ref: 'User',
    required: true,
  },
  name: {
    type: String,
    required: [true, 'Name is required'],
  },
  email: {
    type: String,
    required: [true, 'Email is required'],
    unique: true,
    lowercase: true,
    validate: [validator.isEmail, 'Please enter a valid email'],
  },
  phone: {
    type: Number,
    required: [true, 'Phone is required'],
    unique: true,
  },
  gender: {
    type: String,
    required: true,
    enum: ["male", "female", "prefer not to say"]
  }
})

const Questionnaire = mongoose.model('Questionnaire', questionaireSchema)
module.exports = Questionnaire

而不是上面的,我希望作者能够提供他需要的输入字段,这些输入字段可能与其他作者的输入字段不同。帮助别人。

我希望我解释得当。

标签: node.jsmongodbexpressmongoosemongoose-schema

解决方案


添加以下文件questionaireSchema

formData: [{
label : String,
value : String
}]

现在将所有动态表单数据保存在formDatareq.body.formData 的字段中

例如 req.body.formData

[
    {
        label: "name",
        value : "XYZ"
    },
     {
        label: "email",
        value : "XYZ@mail.com"
    },

]

推荐阅读