gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-10-31 23:56:33 25 4
gpt4 key购买 nike

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

我在运行查询后获得了所有记录,但是当我尝试将这些记录分配给某个变量时,它显示 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com