Mongoose モデルを操作するための独自の API を作成することは理にかなっていますか?
単純な Mongoose ユーザー モデルがあるとします。
var UserSchema = new mongoose.Schema({
email: { type: 'string', required: true, unique: true, lowercase: true },
password: { type: 'string', required: true },
name: {type: 'string'}
});
var UserModel = mongoose.model('User', UserSchema);
抽象的なアプリケーションの場合、ユーザー モデルには、'create'、'delete'、'update'、'find'、'authenticate' などのメソッドが必要です。したがって、この目的を達成するための2つのアプローチがあります。
これらのメソッドを次のように Mongoose モデルに含めます。
UserSchema.static('create', function (data, callback) { var user = new User(data); user.save(function (err) { if (err) return callback(err); return callback(null, user); }); });
次のようにカスタム User クラスでメソッドをラップします。
UserProvider = function(){}; UserProvider.prototype.create = function(data, callback) { var user = new User(data); user.save(function (err) { if (err) return callback(err); return callback(null, user); }); };
最初のものでは、次のように新しいユーザーを作成できます。
UserModel.create({name: 'test'}, function (err, user) {
if (err) {// do something}
});
そして2番目のものでは、同様の新しいものを作成できます:
var userProvider= new UserProvider();
userProvider.create({name: 'test'}, function (err, user) {
if (err) {// do something}
});
これらのアプローチは似ていますが、将来的には Mongoose API を壊さないものを選択する必要があると感じています。
マングースモデルに適したアプローチを教えてください。