-1

我做了一个类名 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()
4

2 回答 2

0

您可以尝试将这些回调转换为承诺

https://benmccormick.org/2015/12/30/es6-patterns-converting-callbacks-to-promises/

于 2017-04-12T01:04:26.743 回答
0

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

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

于 2017-04-12T01:16:53.507 回答