你能为Mongoose中的子文档定义实例方法吗?

wci*_*ciu 6 mongoose node.js

如果我在Mongoose中有一个Schema定义如下:

var subSchema = new Schema({
  some: String
});

var topSchema = new Schema({
  subs: [subSchema]
});

var topModel = mongoose.model("Top", topSchema);
Run Code Online (Sandbox Code Playgroud)

是否可以为子文档定义实例方法?我尝试了以下(在模型声明之前添加),但它不起作用:

subSchema.methods.someFn = function() { 
  return 'blah';
};
Run Code Online (Sandbox Code Playgroud)

wci*_*ciu 3

回答我自己的问题。

我最初想做的是创建一个可用于子文档集合的函数,如下所示:

topdoc.subs.someFn();
Run Code Online (Sandbox Code Playgroud)

然而,我实际上对原始问题中的代码所做的是为子文档本身创建一个函数,如下所示:

topdoc.subs[i].someFn();
Run Code Online (Sandbox Code Playgroud)

这有效。

据我所知,Mongoose 不支持为子文档集合创建函数。

我通过在 topSchema 中定义一个可以执行我想要的操作的方法来解决这个问题。