JavaScript中读取SQL查询返回的RowDataPacket对象属性问题
如何从SQL查询返回的RowDataPacket数组中获取username属性
兄弟,我一眼就看穿问题所在啦!你拿到的result根本不是单个对象,而是一个数组!你看你给出的结构:[ RowDataPacket { username: 'admin', password: 'admin' } ],外面的方括号就是明证——里面才是存着用户信息的RowDataPacket对象,你之前的访问方式全错在没先拿到数组里的元素!
为什么你之前的方法都不行?
result.username:你在数组本身找username属性,数组哪有这个属性啊,肯定返回undefinedresult.RowDataPacket.username:RowDataPacket是这个对象的构造函数名称,不是对象上的属性键,这么写完全找错地方了result["username"]:和第一种情况一样,还是在数组上找键为username的元素,自然拿不到值
正确的访问方式
直接先取数组的第一个元素,再访问它的username属性就行:
// 最直接的写法 var sqlusername = result[0].username;
如果想代码更清晰,也可以用解构赋值:
// 先把数组里的第一个对象解构出来 const [userRow] = result; var sqlusername = userRow.username;
要是怕查询结果为空(比如没找到匹配的用户),最好加个判断避免报错:
// 数组有内容才取,否则返回null var sqlusername = result.length > 0 ? result[0].username : null;
顺带提一句:RowDataPacket本质就是个普通JS对象,你甚至可以把它转成纯JS对象来用(比如JSON.parse(JSON.stringify(result[0]))),但其实完全没必要,直接用result[0].username就足够啦!
内容的提问来源于stack exchange,提问作者Hawkotron
相关产品推荐
相关产品推荐

