Mongoose - 向回调中返回的对象添加方法

Posted

技术标签:

【中文标题】Mongoose - 向回调中返回的对象添加方法【英文标题】:Mongoose - add method to object that is returned in the callback 【发布时间】:2015-05-27 16:35:27 【问题描述】:

有没有办法向回调中返回的对象添加函数?

User.find('age':'20', function(err, users)
    users.function();
);

似乎statics 仅适用于模型。示意图:

User.static();

methods 仅适用于实例

(new User()).method();

它们似乎都不适用于用户,我认为这只是一个普通的 js 对象变量。我错过了什么吗?

【问题讨论】:

users 是一个带有find 的数组,而不是一个文档。 【参考方案1】:

Schema.method 描述,来自文档:

将实例方法添加到由从该模式编译的模型构造的文档中。

所以,如果你这样做:

var userSchema = new Schema(
    username: String,
    age: Number
);

userSchema.method('showAge', function () 
    return this.age;
);

,并在从如下查询返回的文档中调用您的方法:

User.findOne('age':'20', function(err, user)
    console.log(user.showAge());
);

它应该工作。也许您遇到问题是因为您在array 中调用了您的方法users.function()。请记住:find 方法返回一个文档数组。

【讨论】:

以上是关于Mongoose - 向回调中返回的对象添加方法的主要内容,如果未能解决你的问题,请参考以下文章

无法向 Mongoose 查询返回的对象添加新属性 [重复]

从 Mongoose Find() 查询向对象数组添加属性 [重复]

从 Mongoose Find() 查询向对象数组添加属性 [重复]

Mongoose:我如何避免回调地狱,同时允许对不返回承诺的 mongoose 方法进行存根?

Mongoose“创建”方法 - 没有回调吗? (使用护照和角度)

如何向函数回调添加额外参数