ฉันมีโมดูลโหนดอย่างง่ายที่เชื่อมต่อกับฐานข้อมูลและมีฟังก์ชันต่างๆในการรับข้อมูลตัวอย่างเช่นฟังก์ชันนี้:
dbConnection.js:
import mysql from 'mysql';
const connection = mysql.createConnection({
host: 'localhost',
user: 'user',
password: 'password',
database: 'db'
});
export default {
getUsers(callback) {
connection.connect(() => {
connection.query('SELECT * FROM Users', (err, result) => {
if (!err){
callback(result);
}
});
});
}
};
โมดูลจะถูกเรียกด้วยวิธีนี้จากโมดูลโหนดอื่น:
app.js:
import dbCon from './dbConnection.js';
dbCon.getUsers(console.log);
ฉันต้องการใช้สัญญาแทนการโทรกลับเพื่อส่งคืนข้อมูล จนถึงตอนนี้ฉันได้อ่านเกี่ยวกับคำสัญญาที่ซ้อนกันในหัวข้อต่อไปนี้: การเขียน Clean Code ด้วย Nested Promisesแต่ฉันไม่พบวิธีแก้ปัญหาใด ๆ ที่ง่ายพอสำหรับกรณีการใช้งานนี้ อะไรคือวิธีที่ถูกต้องในการกลับมาresult
โดยใช้คำสัญญา?