1

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つのアプローチがあります。

  1. これらのメソッドを次のように 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);
        });
     });
    
  2. 次のようにカスタム 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 を壊さないものを選択する必要があると感じています。

マングースモデルに適したアプローチを教えてください。

4

1 に答える 1