如果我在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)
回答我自己的问题。
我最初想做的是创建一个可用于子文档集合的函数,如下所示:
topdoc.subs.someFn();
Run Code Online (Sandbox Code Playgroud)
然而,我实际上对原始问题中的代码所做的是为子文档本身创建一个函数,如下所示:
topdoc.subs[i].someFn();
Run Code Online (Sandbox Code Playgroud)
这有效。
据我所知,Mongoose 不支持为子文档集合创建函数。
我通过在 topSchema 中定义一个可以执行我想要的操作的方法来解决这个问题。