Bluebird NPM:Bluebird JS Promise 示例
什么是 Bluebird JS?
Bluebird JS 是一个功能齐全的 JavaScript Promises 库。Bluebird 最强大的功能是它允许您“承诺化”其他 Node 模块,以便异步使用它们。Promise 是一个应用于回调函数的概念。此概念用于确保调用的每个回调函数都返回值。
因此,如果一个 NodeJS 模块包含一个不返回值的回调函数,并且我们对该 Node 模块进行了 Promise 化,那么该特定 Node 模块中的所有函数都将自动修改,以确保它返回值。
因此,您可以使用 BlueBird 使 MongoDB 模块异步运行。这为编写 Node.js 应用程序增加了另一个层级的便捷性。
我们将通过一个示例来了解如何使用 bluebird 模块。
我们的示例将首先连接到“EmployeeDB”数据库中的“Employee”集合。如果成功建立连接,它将获取集合中的所有记录,并在控制台中相应地显示它们。
如何使用 Bluebird JS 库生成 Promise
以下是使用 Bluebird JS 库生成 Promise 的分步示例
步骤 1) 安装 NPM 模块
要从 Node 应用程序中使用 Bluebird,需要 Bluebird 模块。要安装 Bluebird 模块,请运行以下命令
npm install bluebird
步骤 2) 包含 Bluebird 模块
下一步是在代码中包含 bluebird 模块并对整个 MongoDB 模块进行 Promise 化。通过 Promise 化,我们意味着 bluebird 将确保 MongoDB 库中定义的每一个方法都返回一个 Promise。
代码解释:
- require 命令用于包含 Bluebird 库。
- 使用 Bluebird 的 .promisifyAll() 方法为 MongoDB 模块提供的每个方法创建一个异步版本。这确保了 MongoDB 模块的每个方法都将在后台运行,并确保 MongoDB 库中的每个方法调用都返回一个 Promise。
步骤 3) 连接到数据库
最后一步是连接到我们的数据库,检索我们集合中的所有记录,并在我们的控制台中显示它们。
代码解释:
- 您会注意到,我们使用的是“connectAsync”方法而不是正常的连接方法来连接到数据库。Bluebird 实际上为 MongoDB 库中的每个方法添加了 Async 关键字,以区分那些返回 Promise 的调用和那些不返回 Promise 的调用。因此,没有 Async 关键字的方法不保证会返回值。
- 与 connectAsync 方法类似,我们现在使用 findAsync 方法来返回 mongoDB 'Employee' 集合中的所有记录。
- 最后,如果 findAsync 返回一个成功的 Promise,那么我们定义一个代码块来遍历集合中的每条记录并在控制台中显示它们。
如果正确执行上述步骤,Employee 集合中的所有文档将显示在控制台中,如下面的输出所示。
此处附上代码供您参考
var Promise = require('bluebird'); var mongoClient = Promise.promisifyAll(require('mongodb')).MongoClient; var url = 'mongodb:///EmployeeDB'; mongoClient.connectAsync('mongodb:///EmployeeDB') .then(function(db) { return db.collection('Employee').findAsync({}) }) .then(function(cursor) { cursor.each(function(err, doc) { console.log(doc); }) });