Bluebird NPM: Bluebird JS Promise พร้อมตัวอย่าง

บลูเบิร์ด JS คืออะไร?

Bluebird JS เป็นไลบรารี Promise ที่มีคุณลักษณะครบถ้วนสำหรับ Javaสคริปต์ คุณสมบัติที่แข็งแกร่งที่สุดของ Bluebird คือมันช่วยให้คุณ "สัญญา" กับโมดูล Node อื่นๆ เพื่อใช้แบบอะซิงโครนัสได้ Promisify เป็นแนวคิดที่นำไปใช้กับฟังก์ชันคอลแบ็ก แนวคิดนี้ใช้เพื่อให้แน่ใจว่าฟังก์ชันคอลแบ็กทุกฟังก์ชันที่ถูกเรียกใช้จะส่งคืนค่าบางอย่างกลับมา

ดังนั้นถ้าก NodeJS module มีฟังก์ชัน callback ซึ่งไม่ส่งคืนค่า และหากเราสัญญาโมดูลโหนด ฟังก์ชันทั้งหมดในโมดูลโหนดนั้นจะถูกแก้ไขโดยอัตโนมัติเพื่อให้แน่ใจว่าจะส่งคืนค่า

ดังนั้นคุณสามารถใช้ BlueBird เพื่อสร้าง MongoDB โมดูลทำงานแบบอะซิงโครนัส ซึ่งช่วยเพิ่มระดับความสะดวกอีกขั้นเมื่อเขียนแอปพลิเคชัน Node.js

เราจะดูตัวอย่างวิธีใช้โมดูล bluebird

ตัวอย่างของเราจะสร้างความเชื่อมต่อกับ "คอลเลกชันพนักงาน" ในฐานข้อมูล "EmployeeDB" ก่อน หากสร้างการเชื่อมต่อ "จากนั้น" ก็จะรับบันทึกทั้งหมดในคอลเลกชันและแสดงในคอนโซลตามลำดับ

วิธีสร้างสัญญาด้วย Bluebird JS Library

นี่คือตัวอย่างทีละขั้นตอนในการ สร้างคำมั่นสัญญา ด้วยไลบรารี Bluebird JS:

ขั้นตอนที่ 1) การติดตั้งโมดูล NPM

หากต้องการใช้ Bluebird จากภายในแอปพลิเคชัน Node จำเป็นต้องมีโมดูล Bluebird หากต้องการติดตั้งโมดูล Bluebird ให้รันคำสั่งด้านล่าง

npm ติดตั้งบลูเบิร์ด

ขั้นตอนที่ 2) รวมโมดูล Bluebird

ขั้นตอนต่อไปคือการรวมโมดูล bluebird ไว้ในโค้ดของคุณและรับประกันทั้งหมด MongoDB โมดูล. โดยสัญญาเราหมายความว่า bluebird จะรับรองว่าแต่ละวิธีที่กำหนดไว้ใน MongoDB ห้องสมุดคืนคำสัญญา

สร้างสัญญาด้วย Bluebird JS Library

คำอธิบายรหัส:-

  1. คำสั่ง need ใช้เพื่อรวมไลบรารี Bluebird
  2. ใช้เมธอด .promisifyAll() ของ Bluebird เพื่อสร้างเวอร์ชันอะซิงค์ของทุกเมธอด MongoDB โมดูลให้ ซึ่งจะทำให้แต่ละวิธีของการ MongoDB โมดูลจะทำงานในพื้นหลังและตรวจสอบให้แน่ใจว่ามีการส่งคืนสัญญาสำหรับการเรียกใช้เมธอดแต่ละครั้งใน MongoDB ห้องสมุด.

ขั้นตอนที่ 3) เชื่อมต่อกับฐานข้อมูล

ขั้นตอนสุดท้ายคือการเชื่อมต่อกับฐานข้อมูลของเรา ดึงข้อมูลบันทึกทั้งหมดในคอลเลกชันของเรา และแสดงในบันทึกคอนโซลของเรา

สร้างสัญญาด้วย Bluebird JS Library

คำอธิบายรหัส:-

  1. คุณจะสังเกตเห็นว่าเรากำลังใช้เมธอด “connectAsync” แทนวิธีการเชื่อมต่อปกติสำหรับการเชื่อมต่อกับ ฐานข้อมูล. จริงๆ แล้ว Bluebird เพิ่มคำสำคัญ Async ให้กับแต่ละวิธีใน MongoDB ไลบรารีเพื่อแยกแยะการเรียกที่ส่งคืนคำสัญญาและการไม่ส่งคืน ดังนั้นจึงไม่มีการรับประกันว่าวิธีการที่ไม่มีคำ Async จะส่งคืนค่า
  2. คล้ายกับวิธี connectAsync ตอนนี้เรากำลังใช้เมธอด findAsync เพื่อส่งคืนระเบียนทั้งหมดในคอลเล็กชัน 'Employee' ของ mongoDB
  3. ในที่สุด หาก findAsync ส่งกลับคำสัญญาที่ประสบความสำเร็จ เราจะกำหนดบล็อกของโค้ดเพื่อวนซ้ำผ่านแต่ละรายการในคอลเลกชัน และแสดงไว้ในบันทึกคอนโซล

หากดำเนินการตามขั้นตอนข้างต้นอย่างถูกต้อง เอกสารทั้งหมดในคอลเลคชันพนักงานจะปรากฏในคอนโซลตามที่แสดงในผลลัพธ์ด้านล่าง

สร้างสัญญาด้วย Bluebird JS Library

นี่คือรหัสสำหรับการอ้างอิงของคุณ:

var Promise = require('bluebird');

var mongoClient = Promise.promisifyAll(require('mongodb')).MongoClient;

var url = 'mongodb://localhost/EmployeeDB';
mongoClient.connectAsync('mongodb://localhost/EmployeeDB')

.then(function(db) {
        return db.collection('Employee').findAsync({})

    })
    .then(function(cursor) {
        cursor.each(function(err, doc) {
            console.log(doc);
        })
    });