node.js - 如何为 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
而不是上面的,我希望作者能够提供他需要的输入字段,这些输入字段可能与其他作者的输入字段不同。帮助别人。
我希望我解释得当。
解决方案
添加以下文件questionaireSchema
formData: [{
label : String,
value : String
}]
现在将所有动态表单数据保存在formData
req.body.formData 的字段中
例如 req.body.formData
[
{
label: "name",
value : "XYZ"
},
{
label: "email",
value : "XYZ@mail.com"
},
]
推荐阅读
- c# - CS0104 我需要帮助 'Object' 是 'UnityEngine.Object' 和 'object' 之间的模棱两可的引用
- wamp - 我在 Wamp localhost 仪表板的“您的项目”下看不到可点击的图标
- c# - 使用 Emgu CV 将图像保存到文件夹
- python - pandas 数据帧中的 Isna() 函数返回布尔值,但它将我的数据帧转换为 NaN,为什么?
- c - 计算 Line 和 Arc 之间的交点
- recursion - 在递归函数中链接本地迭代器时出现 Rust Lifetime 问题
- c# - 检测玩家何时与粒子碰撞 - Unity
- python - Asyncpg/PostgreSQL (python/discord.py)
- android - 垂直向下滑动动画在 iOS 上不起作用
- python - AssertionError: 301 != 200 : 无法检索重定向页面