如何将数据从模型发送到控制器节点js

How to send data from model to controller node js

我在路由中调用控制器中的 getIndex 函数,模型中的 fetchAll 正在从数据库中获取数据,但如何存储数据并将其发送到控制器以及如何在控制器中接收数据。

这是我连接数据库的方式

const mysql = require('mysql2');
const pool = mysql.createPool({
host: 'localhost',
user: 'root',
database: 'practice',
password: ''
});
module.exports = pool.promise();

型号

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

module.exports = class User {   
fetchAll(){
     db.execute('SELECT * FROM users')
     .then(([rows,fieldData]) => {
         console.log(rows); //giving the required data
      })
}
}

控制器

const User = require('../model/user');

exports.getIndex = (req,res,next) => {
const user = new User();
user.fetchAll();
res.render('index');
};

这是一个很好的例子,说明在哪里使用承诺和 async/await

在模式中执行此操作

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

module.exports = class User {
    fetchAll() {
        return (new Promise((resolve, reject) => {
            db.execute('SELECT * FROM users')
                .then(([rows, fieldData]) => {
                    resolve(rows); // return data
                })
        }))

    }
}

在控制器中执行此操作

const User = require('../model/user');

exports.getIndex = async (req, res, next) => {
    const user = new User();
    let data = await user.fetchAll();
    res.render('index');
};