2013-11-21 77 views
1

我使用node-mysql調用存儲過程,結果包含一些模式我不想要fieldCount,affectedRows,如何忽略這些?我不想要的存儲過程返回結果

當我使用mysql的commend來調用該過程時,沒有這些模式。

程序:

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 
    } 
] 

回答

1

你正在尋找的結果是不是數組的成員,你正在尋找......它們嵌套在第一個元素該數組本身就是另一個數組,它在你的例子中只有一個成員,但是如果它有更多的行,它們將是內部數組的成員,而不是外部成員。您需要移動一個級別。

使用存儲過程,您期望在元素[0] [0]處找到第一個結果集的第一行,在[0]處找到第二個行(如果有的話) ] [1],第三個(如果有)在[0] [2] ...等等。結果不是[0],然後是[1]然後是[2],它們都嵌套在[0]內部的數組中。

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/