如何从 Helper Mysql Promises nodejs 传递数据

How to pass data from Helper Mysql Promises nodejs

我在从文件夹助手传递数据时遇到问题

database.js

const mysql = require('mysql2');

const pool = mysql.createPool({
    host: 'localhost',
    port:'3306',
    user: 'root',
    database: '',
    password: '',
    dateStrings: true
});

module.exports = pool.promise();

helper.js

const Master = require('../models/inspection');

module.exports = {
    getLokasi: function (x) {
        Master.fetchAll()
            .then(([result]) => {
                const hasil = result;
                return hasil;
            })
            .catch(err => console.log(err));
    }
}

型号inspection.js

const db = require('../util/database');

module.exports = class Master {
    constructor(si_id) {
        this.si_id  = si_id;
        
    }

    static fetchAll() {
        return db.execute('SELECT * FROM mt_analisa_resiko');
    }

  };

控制器

const helpers = require('../../util/helpers');

exports.getInspectionDetail = (req, res, next) => {
    const test = helpers.getLokasi();
    console.log(test);
}

问题总是return未定义

但是当我 console.log(hasil) 在 helper.js 上时它 return 数据。我如何从助手传递数据,以便我可以在我的控制器上使用数据。

您需要return承诺:

module.exports = {
    getLokasi: function (x) {
        return Master.fetchAll()
            .then(([result]) => {
                const hasil = result;
                return hasil;
            })
            .catch(err => console.log(err));
    }
}

您应该能够访问 returned 值然后:

exports.getInspectionDetail = async (req, res, next) => {
    const result = await helpers.getLokasi();
    console.log(result);
}