Mongoose - 更新模型的实例方法,这是一种好习惯吗?

Posted

技术标签:

【中文标题】Mongoose - 更新模型的实例方法,这是一种好习惯吗?【英文标题】:Mongoose - instance methods updating the model, is this good practice? 【发布时间】:2012-08-12 18:29:30 【问题描述】:

我正在使用一些猫鼬模型instance methods 来尝试封装一些业务逻辑,而不是散布在我的应用程序中。一个例子:

 MySchema.methods.doSomethingAndUpdateCount = function (somedata) 
        //Do something to model here using somedata
        this.someCount ++;
        this.save();
 ;

不过,我今天又看了一遍,我不确定这是否真的是一个好习惯。一方面,它并没有真正为使用这种方法的应用程序部分提供处理错误的方法。也许问题出在this.save(); - 也许这不应该在实例方法中,而是由方法的使用者调用。所以……

拥有更新实例数据的实例方法是一种好习惯吗? 如果是这样,您应该从实例方法调用this.save();,还是在使用代码时这样做? 在这种情况下您应该如何处理错误?

【问题讨论】:

【参考方案1】:

一般概念没问题,但是你的实例方法应该支持一个回调参数,你可以提供该参数保存为this.save(callback);,以便客户端可以收到错误通知。

【讨论】:

作为设计反馈的另一点,通常方法名称中不应包含“and”一词。在架构上,最好和最优雅的系统被设计成每个方法只做一件事。

以上是关于Mongoose - 更新模型的实例方法,这是一种好习惯吗?的主要内容,如果未能解决你的问题,请参考以下文章

未来所有模型实例的 Mongoose Save 方法的Sinon Mock(带有承诺)

Mongoose 模型中的自定义实例或静态方法中的验证错误

如何在 mongoose 和 mongodb 中更新嵌套模型

找到一种使用 passport-local-mongoose 更新用户护照的方法

Mongoose:通过 POST JSON 更新项目

如何在 Mongoose 中更新/插入文档?