存储过程返回的结果,我不想要的

我使用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] [0]处find第一个结果集的第一行,在[0] [1]处find第二行(如果有的话),第三行(如果有)在[0] [2] …等等。 结果不是[0]然后是[1],然后是[2],它们都嵌套在[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/