javascript - Node 表达 : not able to access data after query execution

标签 javascript node.js express

我有一个简单的自定义模块,其中所有方法都应该返回数据库记录。

我在运行查询后获得了所有记录,但是当我尝试将这些记录分配给某个变量时,它显示 null。不确定发生了什么。 这是我的自定义模块代码:

module.exports = {

    mydata: {},
    all: function (req, res, next) {

        var posts = null;

        con.query("SELECT post_id,title, body from `posts`", function (err, rows, fileds) {
            if (err) {
                console.log('Error' + err);
            }
            posts = rows[0]; // assigned object object to posts but not working


            console.log('names' + posts);
        });

        console.log('my posts' + posts); // it says null/empty 
        return posts;       // empty return

    },

我在我的 route 调用所有这样的方法:

console.log("admin.js :" + postModel.all());

全部为空或空。请指导或建议。我错过了什么吗?

最佳答案

尝试使用 async & await 加上最好的做法是将代码包装在 try catch 中,任何未决的 promise 都将在 .then 方法中解决,或者任何错误都将在调用者/最终函数的 .catch 中被捕获:

/* Handler (or) Service (or) Whatever */

const FetchDataFromDB = require('../');

/* caller Function */
let fetchDataFromDB = new FetchDataFromDB();
fetchDataFromDB.getDataFromDB()
    .then((res) => console.log(res))
    .catch((err) => console.log(err))

/* 数据库层 */

class FetchDataFromDB {

    /* Method to get data from DB */
    async getDataFromDB() {

        const getQuery = "SELECT post_id,title, body from `posts`";
        try {
            let dbResp = await con.query(getQuery);
            if (dbResp.length) {
                //Do some logic on dbResp
            }
            return dbResp;
        } catch (error) {
            throw (error);
        }
    }
}

module.exports = FetchDataFromDB;

关于javascript - Node 表达 : not able to access data after query execution,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56000183/

相关文章:

javascript - AngularJs。在 $http.success 中调用 jQuery 函数

javascript - 如何让 Google Tag Manager 和 Content-Security-Policy 共存?

javascript - 如何使用 Jest 模拟构造函数状态初始化

javascript - Discord bot 在尝试播放链接后崩溃(Node.js)

javascript - 在单页 MEAN 应用程序中优雅地隐藏导航栏。

javascript - 在javascript的音频缓冲过程中用 "loading"替换文本?

mysql - 仅使用 AWS Cognito + mysql

node.js - 中间件订购 express

node.js - 如何在没有 `gcloud app deploy` 的情况下在 GCP 上部署 Node.js Express 服务器?

javascript - 从 1.2.27 更新到 1.4.7 时 Angularjs 出现错误