不知道如何将回调样式转换为Promise



我正试图使用util.promisify将编写回调的旧方式转换为Promise和Async。我真的很困惑,不知道该怎么做。如果有人能帮我做其中一个,我就可以继续我的所有其他类了。

const pool = require("../db");
module.exports = {
AddDish: (data, callback) => {
pool.query(
`insert into seller(FirstName, LastName, Phone, TimeToContact, Street, City, State, ZipCode, Country, FoodPermit, FoodPermitImage, GovtIdImage, CuisineSpecialize, CookDay, CookTimeFrom, CookTimeTo, Experience, HearAboutUs, Interests) values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)`,
[
data.firstName,
data.lastName,
data.phone,
data.timeToContact,
data.street,
data.city,
data.state,
data.zipCode,
data.country,
data.foodPermit,
data.foodPermitImage,
data.govtIdImage,
data.cuisineSpecialize,
data.cookDay,
data.cookTimeFrom,
data.cookTimeTo,
data.experience,
data.hearAboutUs,
data.interests,
// data.sellerReference, //Optional Attribute
// data.dateCreated, //Autogenerated
// data.dateModified, //Autogenerated
],
(error, results, fields) => {
if (error) {
return callback(error);
}
return callback(null, results);
}
);
},
getSellers: (callback) => {
pool.query(
`select FirstName, LastName, Phone, TimeToContact, Street, City, State, ZipCode, Country, FoodPermit, FoodPermitImage, GovtIdImage, CuisineSpecialize, CookDay, CookTimeFrom, CookTimeTo, Experience, HearAboutUs, Interests from seller`,
[],
(error, results, fields) => {
if (error) {
return callback(error);
}
return callback(null, results);
}
);
},
};

据我所知,如果你不提供回调,pool.query会返回Promise,那么你只需要返回这样的查询:

module.exports = {
AddDish: data => {
return pool.query(
`insert into seller(FirstName, LastName, Phone, TimeToContact, Street, City, State, ZipCode, Country, FoodPermit, FoodPermitImage, GovtIdImage, CuisineSpecialize, CookDay, CookTimeFrom, CookTimeTo, Experience, HearAboutUs, Interests) values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)`,
[
data.firstName,
data.lastName,
data.phone,
data.timeToContact,
data.street,
data.city,
data.state,
data.zipCode,
data.country,
data.foodPermit,
data.foodPermitImage,
data.govtIdImage,
data.cuisineSpecialize,
data.cookDay,
data.cookTimeFrom,
data.cookTimeTo,
data.experience,
data.hearAboutUs,
data.interests
// data.sellerReference, //Optional Attribute
// data.dateCreated, //Autogenerated
// data.dateModified, //Autogenerated
]
);
},
getSellers: () => {
return pool.query(
`select FirstName, LastName, Phone, TimeToContact, Street, City, State, ZipCode, Country, FoodPermit, FoodPermitImage, GovtIdImage, CuisineSpecialize, CookDay, CookTimeFrom, CookTimeTo, Experience, HearAboutUs, Interests from seller`,
[]
);
}
};