mongoose自定义模式types
我从mongoose的文档中读到,可以创build自定义的模式types,添加到已经存在的模式types中。
正如我所build议的,我试图看看mongoose长的例子: https : //github.com/aheckmann/mongoose-long
我需要这个在我正在开发的应用程序中,我有一个简介是一个mongoose模型。 该configuration文件有几个字段,如name
, surname
等MultiValueField
。 MultiValueField
位于具有以下结构的对象上:
{ current : <string> providers : <Array> values : { provider1 : value1, provider2 : value2 } }
上面的结构有一个允许的提供者列表(按优先级排列),可以从中检索字段的值。 当前属性会跟踪当前select哪个提供者作为该字段的值。 最后,对象值包含每个提供者的值。
我在node.js中定义了一个对象,其构造函数将上述结构作为参数,并提供了许多有用的方法来设置新的提供者,添加值等等。
我的configuration文件的每个字段都应该使用不同的提供者列表进行初始化,但是我还没有find一种方法。
如果我将MultiValueField
定义为Embedded Schema
,那么我只能将每个字段都作为Array
。 此外,我不能初始化每个领域的configuration文件创build提供商列表。
我认为最好的解决scheme是定义一个SchemaType MultiValueFieldType
,它具有返回MultiValueField object
的MultiValueField object
。 但是,如何定义这样的自定义模式types呢? 在configuration文件的模式中定义它时,如何使用自定义选项?
我已经在mongooseGoogle小组上发布了一个问题,询问如何创build自定义模式types: https : //groups.google.com/forum/? fromgroups#! topic / mongoose-orm / fCpxtKSXFKc
我只能以数组的forms创build自定义模式types。 你将能够初始化模型,但是这个问题有一些缺点:
- 即使你不需要它们,你也会有arrays
- 如果在其他模型上使用ParameterSchema,则需要复制它
自定义架构types代码:
// Location has inputs and outputs, which are Parameters // file at /models/Location.js var mongoose = require('mongoose'); var Schema = mongoose.Schema; var ParameterSchema = new Schema({ name: String, type: String, value: String, }); var LocationSchema = new Schema({ inputs: [ParameterSchema], outputs: [ParameterSchema], }); module.exports = mongoose.model('Location', LocationSchema);
初始化模型:
// file at /routes/locations.js var Location = require('../models/Location'); var location = { ... } // javascript object usual initialization location = new Location(location); location.save();
当这个代码运行时,它将保存初始化的位置和它的参数。
我不明白你的问题的所有主题,但我希望这个答案可以帮助你。