Skip to content

Latest commit

 

History

History
96 lines (72 loc) · 2.02 KB

File metadata and controls

96 lines (72 loc) · 2.02 KB

Proxy



Guides



# method #1 - Mongoose Model example
js cheat sheet
import mongoose from 'mongoose';

// Dein ursprüngliches Mongoose-Modell
const OriginalModel = mongoose.model('DeinModel', {
  // Hier sind deine Modelleigenschaften
});

// Proxy für findOne() Methode
const CustomFindOneProxy = new Proxy(OriginalModel, {
  get: function (target, prop, receiver) {
    if (prop === 'findOne') {
      return function (conditions, callback) {
        // Hier kommt deine benutzerdefinierte Logik für findOne()
        console.log('Benutzerdefinierte findOne() Logik hier');
        // Du kannst auch die Original-Methode aufrufen, wenn nötig
        return target[prop](conditions, callback);
      };
    } else {
      // Für andere Eigenschaften/Methode des Modells
      return Reflect.get(target, prop, receiver);
    }
  },
});






# method #2
const target = {
  message1: "hello",
  message2: "everyone"
};

const handler1 = {};

const proxy1 = new Proxy(target, handler1);

console.log(proxy1.message1); // hello
console.log(proxy1.message2); // everyone



Log every function call

class TestClass {
  a() {
    this.aa = 1;
  }
  b() {
    this.bb = 1;
  }
}


const logger = className => {
  return new Proxy(new className(), {
    get: function(target, name, receiver) {
      if (!target.hasOwnProperty(name)) {
        if (typeof target[name] === "function") {
          console.log(
            "Calling Method : ",
            name,
            "|| on : ",
            target.constructor.name
          );
        }
        return new Proxy(target[name], this);
      }
      return Reflect.get(target, name, receiver);
    }
  });
};



const instance = logger(TestClass)

instance.a() // output: "Calling Method : a || on : TestClass"