首页 > 解决方案 > 如何将调用 MySQL 的函数替换为查询函数

问题描述

我有这个对 MySQL 进行查询的函数:

    const getAllUserReports = (userID) => {
      return new Promise((resolve, reject) => {
        connection.query(
          `SELECT reports.id,report_types.name,companies.id as companyID,reports.year,reports.deadLine
          FROM reports
          INNER JOIN report_types ON reports.typeID=report_types.id
          INNER JOIN companies ON reports.companyID=companies.id
          WHERE reports.creatorUserID=${userID} and reports.active      
          `,
          (err, result) => {
            if (err) reject(err);
            resolve(result);
          }
        );
      });
};

还有更多这样的功能。我想将其更改为从外部文件获取查询并进行调用的功能。例子:

// Get report by ID
const getReportByID = (query,reportID) => {
  return new Promise((resolve, reject) => {
    connection.query(query(reportID),
      (err, result) => {
        if (err) reject(err);
        resolve(result);
      }
    );
  });
};

标签: mysqlnode.js

解决方案


const getQuery = async (reportID) => {
    const query = await readFromFileOrOtherPlace(reportID);
    return doSomeValidatingParsingEtc(query);
};

const getReportByID = (reportID) => {
    return new Promise(async (resolve, reject) => {
        let query = await getQuery(reportID);
        connection.query(query,
            (err, result) => {
                if (err) reject(err);
                resolve(result);
            }
        );
    });
};

推荐阅读