我有一个简单的自定义模块,其中所有方法都应该返回数据库记录。
我在运行查询后获得了所有记录,但是当我尝试将这些记录分配给某个变量时,它显示 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/