c语言mongoose普通用户,利用mongoose的plugin减少额外的代码

邰胤
2023-12-01

首先来看个例子:

通常的处理办法

// format date

topic.friendly_create_at = tools.formatDate(topic.create_at, true);

topic.friendly_update_at = tools.formatDate(topic.update_at, true);

还有

user.friendly_create_at = tools.formatDate(user.create_at, true);

反正各种各样的,那么就需要写N多次的不同的实现。

那么mongoose中的plugin怎么帮助我们完成这些事呢?

首先,定义两个用于格式化时间的方法,并导出。

/**

* 给所有的 Model 扩展功能

* http://mongoosejs.com/docs/plugins.html

*/

var tools = require('../common/tools');

module.exports = function(schema) {

schema.methods.create_at_ago = function() {

return tools.formatDate(this.create_at, true);

}

schema.methods.updated_at_ago = function() {

return tools.formatDate(this.create_at, true);

};

}

然后将这个plugin引入到某个schema中。

var mongoose = require('mongoose');

var BaseModel = require("./base_model");

var Schema = mongoose.Schema;

var ObjectId = Schema.ObjectId;

var MessageSchema = new Schema({

has_read: { type: Boolean, default: false },

create_at: { type: Date, default: Date.now }

});

MessageSchema.plugin(BaseModel);

MessageSchema.index({master_id: 1, has_read: -1, create_at: -1});

mongoose.model('Message', MessageSchema);

再将使用的地方改成如下方式,就可以在业务代码中省去转换的过程。

楼•

 类似资料: