我使用node-mysql来调用存储过程,结果包含一些我不想要的模式,如 fieldCount,affectedRows ,如何忽略这些?
当我使用mysql命令调用该过程时,没有这些模式。
过程:
DELIMITER \\
CREATE PROCEDURE QUERY_USER (IN p_name VARCHAR(15))
BEGIN
SELECT id,name FROM user WHERE name=p_name;
END\\
结果:
[
[
{
"id": 2,
"name": "codar"
},
{
"id": 3,
"name": "codar"
}
],
{
"fieldCount": 0,
"affectedRows": 0,
"insertId": 0,
"serverStatus": 34,
"warningCount": 0,
"message": "",
"protocol41": true,
"changedRows": 0
}
]
答案 0 :(得分:1)
您正在寻找的结果不是您正在查看的数组的成员...它们嵌套在该数组的第一个元素中,该数组本身是另一个数组,在您的示例中只有一个成员,但是如果它有更多的行,它们将是内部数组的成员,而不是外部数组的成员。你需要移动一个级别。
使用存储过程,您希望在元素[0] [0]处找到第一个结果集的第一行,在[0] [1]处找到第二行(如果有的话),第三行(如果有)有一个)在[0] [2] ...等等。结果不在[0]然后[1]然后[2],它们都在一个嵌套在[0]内的数组中。
答案 1 :(得分:0)
是的,如上所述,当你调用一个过程来获取查询结果时,返回集与直接查询不同,它包含一些信息,如fieldCount,affectedRows。 所以你可以在节点代码方面做到这一点,比如:
var GetgroupList_Sql = "call GetActiveGroup(1); ";
mysqlHelper.ExecuteQuery(GetgroupList_Sql,, function (error, result) {
if (error) {
res.json({success: false, data: error});
return;
}
console.log(result[0]);
});
主要观点是使用结果[0]而不是正常查询的结果。就是这样:))
参考文档:http://www.sitepoint.com/using-node-mysql-javascript-client/