有没有办法重用模板,使用meteor SimpleSchema + Autoforms将数据存储到不同的相同集合中?

时间:2016-07-19 14:00:15

标签: javascript meteor meteor-autoform simple-schema

我稍微更新了原始问题,因为我已经找到了我一直在寻找的第一部分的答案。

新问题:

截至目前,我有一个模式定义,它将自身附加到3个集合,即C1,C2,C3。

 some_schema = new SimpleSchema ({
    ...
    });
C1.attachSchema(some_schema);
C2.attachSchema(some_schema);
C3.attachSchema(some_schema);

我所做的最终目标是:

如果用户选择option B via option A,则表单必须为stored in C1 Collection。同样,如果用户选择option A via option C,则表单必须为stored in C2 collection。 无论用户如何使用option A结束,呈现给用户的表单都是相同的。

当涉及模板时,我不得不复制它们三次,因为不能存在多个名称相同的模板。

我对上述方法的唯一抱怨是,如果有30个而不是3个模板,那么我将不得不最终处理维护30x3 = 90个具有不同模板名称的模板,即使它们是相同的!

您是否碰巧知道处理此问题的更好方法?

原始问题

我试图重用我编写的特定架构定义。是否可以根据条件将相同的模式定义附加到不同的集合?

最后,我需要根据选择的下拉列表将相同类型的对象存储在不同的集合中。

例如,我有3个选项可供选择列表组。 一个 乙 ç

我有为X定义的通用架构。

取决于所做的选择(A B或C),我需要将模式附加到collection1 collection2或collection3。

基本理念是......

some_schema = new SimpleSchema ({
...
});

if ( option A)
then collection1.attachSchema(some_schema);
else if (option B)
then collection2.attachSchema(some_schema);
else if (option C)
then collection3.attachSchema(some_schema);

这可能吗?如果是这样,我真的很感激一些指示让我朝着正确的方向前进。

由于

1 个答案:

答案 0 :(得分:1)

为什么这些模式会有条件?您是否为3个集合中的每个集合使用多个模式?架构的目的是验证插入和更新的结构。另外,模式实际上并不意味着动态地附加/删除。我建议你这样做:

collection1.attachSchema(some_schema);
collection2.attachSchema(some_schema);
collection3.attachSchema(some_schema);

然后根据您的选项插入适当的模式。

最后,如果您有3个相同的模式,为什么不将它们合并为一个,并用某种type变量区分它们(基本上是option变量的值。

doc.type = option;
collection.insert(doc);

否则,每当您阅读或写下其中一个对象时,您总会有这个笨拙的集合选择器。