Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/450.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 TypeError:无法读取属性';标题';未定义Nodejs Mysql查询结果的类型_Javascript_Mysql_Node.js_Node Modules - Fatal编程技术网

Javascript TypeError:无法读取属性';标题';未定义Nodejs Mysql查询结果的类型

Javascript TypeError:无法读取属性';标题';未定义Nodejs Mysql查询结果的类型,javascript,mysql,node.js,node-modules,Javascript,Mysql,Node.js,Node Modules,这个错误并不总是发生,但它经常发生,我找不到任何解决方案。任何帮助都将不胜感激 PS:数据库中的表有“title”列,其中包含数据 代码: async function selectNotificationData(control_message_id){ const sql = await new Promise((res,rej)=>{ let query = "SELECT title, body ,url_push, img_push, url_type, st

这个错误并不总是发生,但它经常发生,我找不到任何解决方案。任何帮助都将不胜感激

PS:数据库中的表有“title”列,其中包含数据

代码:

 async function selectNotificationData(control_message_id){
const sql = await new Promise((res,rej)=>{
    let query = "SELECT title, body ,url_push, img_push, url_type, status,silent,channel FROM control_message WHERE id_control_message =?";
    con.query(query, [control_message_id],(err,row)=>{
        if(err) throw err;
        let n =row[0];
        let pf=null;
        try{
            pf =  setPerFlagOptmized(n.title,n.body);
            res({not_data:n,pf})
        }
        catch (err) {

            console.log("[Row : "+row[0]+"]");
            console.log("[n : "+n+"]");
            console.log("ERROR IN SELECTING NOT DATA OR SETTING THE FLAG : "+err);
        }


    })
}).catch((error)=>{
    console.log("ERROR IN SELECTING Notification DATA : "+error);
});
app_1    | /usr/src/app/node_modules/mysql/lib/protocol/Parser.js:437
app_1    |       throw err; // Rethrow non-MySQL errors
app_1    |       ^
app_1    |
app_1    | TypeError: Cannot read property 'title' of undefined
app_1    |     at Query.con.query (/usr/src/app/v4/message/controllers/expandWorker.js:669:57)
app_1    |     at Query.<anonymous> (/usr/src/app/node_modules/mysql/lib/Connection.js:526:10)
app_1    |     at Query._callback (/usr/src/app/node_modules/mysql/lib/Connection.js:488:16)
app_1    |     at Query.Sequence.end 
(/usr/src/app/node_modules/mysql/lib/protocol/sequences/Sequence.js:83:24)
app_1    |     at Query._handleFinalResultPacket 
(/usr/src/app/node_modules/mysql/lib/protocol/sequences/Query.js:149:8)
app_1    |     at Query.EofPacket 
(/usr/src/app/node_modules/mysql/lib/protocol/sequences/Query.js:133:8)
app_1    |     at Protocol._parsePacket 
(/usr/src/app/node_modules/mysql/lib/protocol/Protocol.js:291:23)
app_1    |     at Parser._parsePacket 
(/usr/src/app/node_modules/mysql/lib/protocol/Parser.js:433:10)
app_1    |     at Parser.write (/usr/src/app/node_modules/mysql/lib/protocol/Parser.js:43:10)
app_1    |     at Protocol.write (/usr/src/app/node_modules/mysql/lib/protocol/Protocol.js:38:16)
错误:

 async function selectNotificationData(control_message_id){
const sql = await new Promise((res,rej)=>{
    let query = "SELECT title, body ,url_push, img_push, url_type, status,silent,channel FROM control_message WHERE id_control_message =?";
    con.query(query, [control_message_id],(err,row)=>{
        if(err) throw err;
        let n =row[0];
        let pf=null;
        try{
            pf =  setPerFlagOptmized(n.title,n.body);
            res({not_data:n,pf})
        }
        catch (err) {

            console.log("[Row : "+row[0]+"]");
            console.log("[n : "+n+"]");
            console.log("ERROR IN SELECTING NOT DATA OR SETTING THE FLAG : "+err);
        }


    })
}).catch((error)=>{
    console.log("ERROR IN SELECTING Notification DATA : "+error);
});
app_1    | /usr/src/app/node_modules/mysql/lib/protocol/Parser.js:437
app_1    |       throw err; // Rethrow non-MySQL errors
app_1    |       ^
app_1    |
app_1    | TypeError: Cannot read property 'title' of undefined
app_1    |     at Query.con.query (/usr/src/app/v4/message/controllers/expandWorker.js:669:57)
app_1    |     at Query.<anonymous> (/usr/src/app/node_modules/mysql/lib/Connection.js:526:10)
app_1    |     at Query._callback (/usr/src/app/node_modules/mysql/lib/Connection.js:488:16)
app_1    |     at Query.Sequence.end 
(/usr/src/app/node_modules/mysql/lib/protocol/sequences/Sequence.js:83:24)
app_1    |     at Query._handleFinalResultPacket 
(/usr/src/app/node_modules/mysql/lib/protocol/sequences/Query.js:149:8)
app_1    |     at Query.EofPacket 
(/usr/src/app/node_modules/mysql/lib/protocol/sequences/Query.js:133:8)
app_1    |     at Protocol._parsePacket 
(/usr/src/app/node_modules/mysql/lib/protocol/Protocol.js:291:23)
app_1    |     at Parser._parsePacket 
(/usr/src/app/node_modules/mysql/lib/protocol/Parser.js:433:10)
app_1    |     at Parser.write (/usr/src/app/node_modules/mysql/lib/protocol/Parser.js:43:10)
app_1    |     at Protocol.write (/usr/src/app/node_modules/mysql/lib/protocol/Protocol.js:38:16)
setPerFlagOptmized功能:

 function setPerFlagOptmized(title,body){
    var t = (title.includes("|*") || title.includes("*|") || title.includes("{{") || title.includes("}}"));
    var b = (body.includes("|*") || body.includes("*|") || body.includes("{{") || body.includes("}}"));
    return (t || b) ? 1:0;
}

当找不到给定查询的记录时,可能会发生这种情况。 在这种情况下,回调中的
err
将不会被定义,相反
row
只是一个空数组

由于您没有对此进行检查,并且直接访问
行[0]
,这将产生
未定义的
,因此会为
n.title
引发错误。因此,您应该添加以下检查:

if(err) throw err;

if (!row.length) {
   // handle error - throw or return here
}
// ..rest of the code

谢谢你的回答,我会试试看,是不是查询遇到了锁超时而什么也没有返回?好问题,但我认为回调中的错误会在这些情况下被定义。我想我需要检查数据库是否抛出了innodb锁信息,这会影响“innodb\u打印\u锁\u等待\u超时\u信息”?嗯,好的,老实说,我在这里不太确定。。也许其他人有主意。对不起:/没关系,伙计,非常感谢你的帮助