Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 如何克隆Mongoose模式?_Node.js_Mongodb_Mongoose - Fatal编程技术网

Node.js 如何克隆Mongoose模式?

Node.js 如何克隆Mongoose模式?,node.js,mongodb,mongoose,Node.js,Mongodb,Mongoose,我正在开发Mongoose插件,该插件必须访问现有模型,创建与以前的模型类似的模式,修复一些属性并添加一些自定义属性。如何做这样的克隆方案?我试过了,但不起作用: var mongoose = require('mongoose'); var mainSchema = new mognoose.schema({'prop' : String}); var anotherSchema = new mongoose.schema(mainSchema); 当然,它根本不起作用,我在API文档和源

我正在开发Mongoose插件,该插件必须访问现有模型,创建与以前的模型类似的模式,修复一些属性并添加一些自定义属性。如何做这样的克隆方案?我试过了,但不起作用:

var mongoose = require('mongoose');

var mainSchema = new mognoose.schema({'prop' : String});
var anotherSchema = new mongoose.schema(mainSchema);

当然,它根本不起作用,我在API文档和源代码中找不到任何解决方案(据我所知)。

首先将模式分配给常规对象:

var mongoose = require('mongoose');

var schemaObj = {'prop' : String}
var mainSchema = new mongoose.Schema(schemaObj);
var anotherSchema = new mongoose.Schema(schemaObj);

此插件将为您完成这项工作

通过NPM安装:

$ npm install mongoose-schema-extend
var mongoose = require('mongoose'),
    extend = require('mongoose-schema-extend');
var Schema = mongoose.Schema;

var mainSchema = new Schema({'prop' : String});
var anotherSchema = mainSchema.extend({'customProp': String});
用法示例:

$ npm install mongoose-schema-extend
var mongoose = require('mongoose'),
    extend = require('mongoose-schema-extend');
var Schema = mongoose.Schema;

var mainSchema = new Schema({'prop' : String});
var anotherSchema = mainSchema.extend({'customProp': String});

如果有人在谷歌上搜索,请尝试:

schema.clone();
这将创建模式的完整副本,因此您可以添加更多属性、多个鉴别器等


这是显而易见的,但不幸的是我无法做到这一点,因为这段代码在插件中工作,所以它获取
Schema
对象作为参数。
mongoose Schema是否可以扩展
删除一些属性?它是
mainSchema
的副本吗?谢谢。这是正确的方法。然后可以使用
YourSchema.add()
as添加属性。