【发布时间】:2013-09-22 10:45:56
【问题描述】:
我从 mongoose 文档中了解到,可以创建自定义模式类型以添加到已经存在的模式类型中。
按照建议,我尝试研究 mongoose-long 示例:https://github.com/aheckmann/mongoose-long
我在我正在开发的应用程序中需要这个,其中我有一个猫鼬模型的配置文件。配置文件有几个字段,例如name、surname 等,它们是MultiValueField。 MultiValueField 位于具有以下结构的对象上:
{
current : <string>
providers : <Array>
values : {
provider1 : value1,
provider2 : value2
}
}
上面的结构有一个允许的提供者列表(按优先级排序),可以从中检索字段的值。当前属性跟踪当前选择哪个提供者用作字段的值。最后,对象值包含每个提供者的值。
我在node.js中定义了一个对象,它的构造函数将上面的结构作为参数,并提供了很多有用的方法来设置新的提供者,添加值等等。
我的个人资料的每个字段都应该使用不同的提供商列表进行初始化,但我还没有找到这样做的方法。
如果我将MultiValueField 定义为Embedded Schema,我只能将每个字段都设置为Array。此外,在使用提供者列表创建配置文件时,我无法初始化每个字段。
我认为最好的解决方案是定义一个SchemaType MultiValueFieldType,它有一个返回MultiValueField object 的转换函数。但是,如何定义这样的自定义模式类型?在配置文件的架构中定义自定义选项时,如何使用自定义选项?
我已经在 mongoose Google 群组上发布了一个问题,询问如何创建自定义架构类型:https://groups.google.com/forum/?fromgroups#!topic/mongoose-orm/fCpxtKSXFKc
【问题讨论】: