Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 函数:选择MySQL并返回JSON_Javascript_Html_Node.js_Express - Fatal编程技术网

Javascript 函数:选择MySQL并返回JSON

Javascript 函数:选择MySQL并返回JSON,javascript,html,node.js,express,Javascript,Html,Node.js,Express,请帮助我,我需要在一个单独的模块文件中实现一个函数,并在渲染必须调用此函数以接收查询数据的路径中实现: function getSobre() { return new Promise((resolve, reject) => { db.query(`SELECT * FROM sobre ORDER BY cod DESC LIMIT 1`, (err, results) => { if (err) {

请帮助我,我需要在一个单独的模块文件中实现一个函数,并在渲染必须调用此函数以接收查询数据的路径中实现:

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; })); 
函数getTabela{ 返回新承诺(功能(解决、拒绝){ //Promise构造函数应该捕获在上抛出的任何错误 //此勾选。或者,尝试/捕获和拒绝(错误)捕获。 让sql=“按cod描述限制1从sobre订单中选择*”; 变量数据={}; db.query(sql,(错误、结果、字段)=>{ 如果(results.length>0){ 解析(字段) }否则{ console.log('Erro:'+err); } }); }); } getTabela().then(函数(行){ //现在您有了行,您可以查看是否有setImmediate(()=>{throw err;}));
通过这种方式,您应该始终拥有查询中预期的数据。

现在您根据答案修改了整个问题。。请保留原始问题并添加疑问作为评论的一部分。几个月后出现此问题的人会因为看到答案而感到困惑,这在您编辑后没有多大意义。Remember:它应该对社区有用,而不仅仅是您:)解决方案: