我做了一个类名Chocolate,并在其中放了一些mongodb函数,所以我需要创建一个连接,并从回调中获取db,这样让我的代码变得丑陋
法典:
let chocolate = new Chocolate(url,
db => {
chocolate.insert("en", { "h": 1 }).disconnect();
})
类代码在这里:
class Chocolate {
constructor(url, callback) {
this.url = url;
this.connect()
.then(db => {
this.db = db;
callback(db);
});
}
connect(callback) {
return MongoClient
.connect(this.url);
}
disconnect() {
this.db.close();
}
insert(className, dataObject) {
const collection = this.db.collection(className);
collection.insert(dataObject)
.then(
result => {
return result.insertedIds;
});
return this;
}
}
我知道orm可以帮助我,但我不想使用一些orm,因为我只需要一点功能。
那么,如何让这些代码变得漂亮呢?
或者像这样:
let chocolate - new Chocolate(url);
chocolate.insert(xxxx).find(xxxx).run().disconnect()
你可以尝试将这些回调转换为承诺
https://benmccormick.org/2015/12/30/es6-patterns-converting-callbacks-to-promises/
我不会在构造函数中做异步代码,而是在实例化对象后调用连接函数。
通常,从构造函数返回不是对象实例的任何内容被认为是不好的做法。