簡體   English   中英

如何從node.js響應中的mysql過濾結果

[英]How to filter results from mysql in node.js response

我有一個來自MySQL的查詢,選擇了兩行的所有列。 它返回預期的結果,但是我想要的是存儲所有提取到data行,像這樣:

var response = {
    data : result //result from mysql
};

但我不想顯示所有列。 可以說該表有4列。 MySQL查詢的結果是:

[
    {
        row1: 'a', 
        row2: 'b', 
        row3: 'c', 
        row4: 'd'
    },
    {
        row1: 'e', 
        row2: 'f', 
        row3: 'g', 
        row4: 'h'
    }
]

而且我只想在response.data傳遞row2和row3。 我希望它具有以下結果:

data : [
           {
               row2: 'b', 
               row3: 'c'
           }, 
           {
               row2: 'f', 
               row3: 'g'
           }
       ]

怎么做? 注意,我沒有在MySQL查詢中指定僅返回row2和row3,因為該MySQL調用將在其他調用中使用。

我認為您不想更改實際的resopnse對象,因為您已指定將結果用於其他調用。

我嘗試使用簡單的JavaScript進行跟蹤。

var response = {data:[
    {
        row1: 'a', 
        row2: 'b', 
        row3: 'c', 
        row4: 'd'
    },
    {
        row1: 'e', 
        row2: 'f', 
        row3: 'g', 
        row4: 'h'
    }
]};

var newResponse = {};    
newResponse.data = response.data.map(function (rows) {
    return {row2:rows.row2,row3:rows.row3};
});

console.log(newResponse); //your result object as you wanted
console.log(response); // the actual response object, just to verify it doesn't got changed

使用下划線地圖功能

像這樣:

var response = {};
response.data = _.map(result, function(row) {
    var newRow = {};
    newRow.row2 = row.row2;
    newRow.row3 = row.row3;
    return newRow;
});

或者,您可以使用地圖選擇來簡化它。

var response = {};
response.data = _.map(result, function(row) {
    return _.pick(row, 'row2', 'row3');
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM