【发布时间】:2015-09-09 23:40:30
【问题描述】:
我开始构建一个应用程序并拥有一个用于创建宠物帖子的集合。
注意:我正在使用以下包来构建我的集合模式,简单模式https://atmospherejs.com/aldeed/simple-schema
我用来将数据插入此特定集合的页面有一个部分,该部分基于用户做出的选择,为他们提供了更多选项。
例如,专注于一个问题,有一些复选框,默认情况下没有选中,但如果用户选择任何复选框,他们将获得更多选项,可以通过复选框或文本区域进行选择。关键是他们将根据自己的选择有其他选项可供选择。
我认为处理数据插入方式的最佳方法是通过特定部分的模板助手,所以这不是问题。
相反,我感到困惑的是集合级别以及如何架构该信息,或者我什至需要。
例如,假设您有一个涉及宠物的问题。
问题可能是:你有宠物吗?
复选框选项可以是:
- 狗
- 猫
- 其他
默认情况下,所有这些复选框都未选中,但如果用户选中任何一个框,则会显示一个文本区域(我再次意识到所有这些都发生在 Template.events 和 Template.helpers 级别)。
既然我已经设置了场景,我真正的问题是,你如何存储这样的信息或架构它以允许这些类型的值。
假设获取这些数据的所有函数都在 Template.helpers 级别,所以这是一个关于如何在这种情况下存储类型数据的简单问题。
我的想法是做这样的事情(使用 simpleSchema 包):
Pet = new SimpleSchema({
petInstructions: {
type: String,
optional: true,
allowedValues: ['Dogs', 'Cats', 'Other']
}
});
但是我不确定这是否正确,让我再次重申,我确实希望复选框具有值“狗”、“猫”、“其他”和文本区域,当其中任何一个被选中时最终用户可以输入有关其宠物的更多信息。
我不清楚的是,我是否在考虑这些数据的 Schema 可能是什么,或者这种信息应该如何存储在 MongoDB 中。
我觉得 TextArea 输入也应该有一个属性,这是考虑它的好方法吗?
例如(添加到上面的示例):
Pet = new SimpleSchema({
petInstructions: {
type: String,
optional: true,
allowedValues: ['Dogs', 'Cats', 'Other'],
textArea: ""
}
});
我是否应该为该特定内容保留另一个属性/值?
这是一个有点细粒度的问题,理解像这样简单的事情将有助于澄清我的其他问题。
谢谢。
【问题讨论】:
标签: javascript mongodb checkbox meteor collections