gpt4 book ai didi

javascript - 从模块覆盖/修饰 ES6 类

转载 作者:行者123 更新时间:2023-11-28 17:41:45 28 4
gpt4 key购买 nike

我正在尝试覆盖模块(connect-mongo)中的类。该模块的工作原理大致如下:

server.js中:

const session = require('express-session');
const MongoStore = require('connect-mongo')(session);

// ...
app.use(session({
store: new MongoStore({ mongooseConnection: mongoose.connection })
}));

模块的源代码index.js如下所示:

module.exports = function (connect) {
const Store = connect.Store || connect.session.Store
const MemoryStore = connect.MemoryStore || connect.session.MemoryStore

class MongoStore extends Store {
constructor(options) {
// construction logic
}

methodA() {
// method logic
}

// More props and methods
}

return MongoStore;
}

我想找到一种方法来覆盖模块的 methodA() 并用我自己的方法装饰该类。

我尝试创建一个 myPatch.js 文件,在其中尝试覆盖 MongoStore,但我似乎无法这样做。我对如何基于 connect 参数动态构造 MongoStore 类感到特别困惑,而且我不知道如何解决这个问题。

MongoStore 类中更改和添加方法的最佳方法是什么?

最佳答案

创建自己的类来扩展 MongoStore ,然后编辑所需的属性可能会更容易。

const session = require('express-session');
const MongoStore = require('connect-mongo')(session);

class MyCustomMongoStore extends MongoStore {

constructor(props) {
// pass any properties to MongoStore class (eg. connection)
super(props);
// add your own properties
this.customProp = props.customProp;
}

methodA() {
// your logic
}

customMethod() {
// your method
}
}

// ...
app.use(session({
store: new MyCustomMongoStore({
mongooseConnection: mongoose.connection,
customProp: yourCustomProperty
})
}));

关于javascript - 从模块覆盖/修饰 ES6 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47776709/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com