如何让我的代码变得漂亮,我必须使用 callbak 来获取 db,但我不想使用这种方式



我做了一个类名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/

我不会在构造函数中做异步代码,而是在实例化对象后调用连接函数。

通常,从构造函数返回不是对象实例的任何内容被认为是不好的做法。

相关内容

  • 没有找到相关文章

最新更新