javascript - 功能:选择 MySQL 并返回 JSON
问题描述
请帮助我,我需要在单独的模块文件中实现一个函数,并且在渲染器必须调用该函数接收查询数据的路径中:
function getSobre() {
return new Promise((resolve, reject) => {
db.query(`SELECT * FROM sobre ORDER BY cod DESC LIMIT 1`, (err, results) => {
if (err) {
return reject(err);
} else {
return resolve(results);
}
});
});
}
const data = {
title: getSobre().then(data => {
/*
* HERE How do I return this "data" to the "title:" ?????????????
*/
}),
name: 'Fabio',
profession: 'Analista'
}
module.exports = data;
解决方案
db.query
是一个 Js 回调。它将等待结果,然后返回任何内容。
所以数据总是空的,因为它在db.query
完全解决之前就被返回了很多
您应该将其包装在本机承诺中,然后解决承诺:
function getTabela{
return new Promise(function(resolve, reject) {
// The Promise constructor should catch any errors thrown on
// this tick. Alternately, try/catch and reject(err) on catch.
let sql = "SELECT * FROM sobre ORDER BY cod DESC LIMIT 1";
var data = {};
db.query(sql, (err, results, fields) => {
if (results.length > 0) {
resolve(fields)
} else {
console.log('Erro: ' + err);
}
});
});
}
getTabela().then(function(rows) {
// now you have your rows, you can see if there are <20 of them
}).catch((err) => setImmediate(() => { throw err; }));
这样,您应该始终拥有查询中预期的数据。
推荐阅读
- reactjs - 当 redux 存储其他数据发生变化时,React hooks useEffect 调用多次
- java - 条件说列表
's 不是 .equal(),即使它们是相同的 - javascript - 错误:this.state.data[index].number 打印索引未定义
- python - Spacy - modify tokenizer for numeric patterns
- amazon-web-services - 如何处理 AWS 中的开发和生产环境?
- javascript - Javascript图像对象不在画布上调整大小
- linux - 在 Linux 中让 BPF 程序与 USDT 探针 (Dtrace) 一起工作
- reactjs - 在 Windows 10 的 WSL ubuntu 上设置赛普拉斯
- c# - C# 从现有 SQLite 数据库中读取数据
- oracle - 如何在oracle plsql中的存储过程中过滤和检索特定字符后的结果?