Mongoose插件 - schema.add到Subschema

时间:2015-06-13 02:48:49

标签: node.js mongodb mongoose

我正在编写一个mongoose插件,涉及向子模板添加元素。我觉得这很简单,但是我已经尝试了几天不成功。

以下是架构的简化:

var inheritables = require('./inheritables.server.module.js');

var OuFieldTypeSchema = new Schema({
   name: String,
   desc: String
});
var OuFieldType = mongoose.model('OuFieldType', OuFieldTypeSchema);

var OuSchema = new Schema({
   name: String,
   fieldTypes: [OuFieldTypeSchema],
});

OuSchema.plugin(inheritables, {inherit: ['fieldTypes']});
mongoose.model('Ou', OuSchema);

在我的Mongoose插件的主体中,我想迭代继承"继承"数组并将以下内容添加到表示Ou模式中每个元素的模式中;

我的插件的简化如下:

var _ = require('lodash');

module.exports = exports = function(schema, options) {
   _.each(options.inherit, function(currItemSchema){
      var addToSchema = {inheritedFrom: {name: String}};

      //Really want to add this to the OuFieldTypeSchema represented by the fieldTypes element array.
      schema.add(addToSchema, currItemSchema + ".");
   });
});

请注意,add()的第二个参数会添加一个前缀,但这不起作用。

我也尝试过:

_.each(options.inherit, function(currItemSchema){
    var addToSchema = {};
    addToSchema[currItemSchema] = {inheritedFrom: {name: String}};
    schema.add(addToSchema);
});

这里的预期行为是我的插件中的其他地方,我有一个设置inheritedFrom模式的方法。设置项目时不会收到任何错误,但结果输出永远不会看到inheritedFrom元素。

我目前正在将inheritedFrom添加到OuFieldType使用的每个子模板中,但上面是简化并且不是很干。

我是Node.JS的新手 - 非常感谢任何正确方向的指针。

0 个答案:

没有答案