Не уверен, как преобразовать стиль обратного вызова в Promise

#node.js

#node.js

Вопрос:

Я пытаюсь преобразовать старый способ написания обратных вызовов в Promise и асинхронный, используя util.promisify . Я действительно в замешательстве и не уверен, как это сделать. Если кто-нибудь может помочь мне с одним из этих, я могу продолжить со всеми моими другими классами.

 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);
      }
    );
  },
};
  

Ответ №1:

Насколько я знаю pool.query возвращает обещание, если вы не предоставите обратный вызов, тогда вам просто нужно будет вернуть запрос следующим образом:

 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`,
      []
    );
  }
};
  

Комментарии:

1. Я не уверен, должен ли быть оператор select или есть какой-то другой способ обработки возврата