2016-07-01 294 views
0

我有一個查詢,使用eqjoin從兩個不同的表中返回以下數據。我想結合leftright,而不是做一個zip()(即重寫namejoined_at),我想將右對象的屬性添加到名爲server_info的屬性中,並且還要刪除「左」並使其它是一個單一的對象,就像在zip操作之後一樣,我如何直接在查詢中執行此操作。加入左側和右側

當前結果

[{ 
    "left":{ 
     "avatar":"a29f54048d9ec6c00913057333160a3e", 
     "joined_at":"Thu Feb 25 2016 21:29:07 GMT+00:00", 
     "name":"Zephy", 
     "uid":"132166948359241728" 
    }, 
    "right":{ 
     "icon":"2aab26934e72b4ec300c5aa6cf67c7b3", 
     "id":"81384788765712384", 
     "member_count":7888, 
     "name":"Discord API", 
     "owner_id":"53905483156684800", 
    } 
}] 

預期結果

[{ 
    "avatar":"a29f54048d9ec6c00913057333160a3e", 
    "joined_at":"Thu Feb 25 2016 21:29:07 GMT+00:00", 
    "name":"Zephy", 
    "uid":"132166948359241728" 
    "server_info": { 
     "icon":"2aab26934e72b4ec300c5aa6cf67c7b3", 
     "id":"81384788765712384", 
     "member_count":7888, 
     "name":"Discord API", 
     "owner_id":"53905483156684800", 
    } 
}] 
+1

你能在這種情況下顯示預期的輸出嗎? –

+0

這是什麼問題? –

+0

@ZohaibIjaz更新後的預期結果。 – Zephy

回答

1

您可以添加.map(function(row) { return row('left').merge({'server_info': row('right')}); })到您的查詢的末尾來獲得這種效果。

0

遍歷列表中的所有對象,並在server_info鍵/屬性裏面添加left對象right對象,然後刪除right對象。

var arr = [{ 
"left":{ 
    "avatar":"a29f54048d9ec6c00913057333160a3e", 
    "joined_at":"Thu Feb 25 2016 21:29:07 GMT+00:00", 
    "name":"Zephy", 
    "uid":"132166948359241728" 
}, 
"right":{ 
    "icon":"2aab26934e72b4ec300c5aa6cf67c7b3", 
    "id":"81384788765712384", 
    "member_count":7888, 
    "name":"Discord API", 
    "owner_id":"53905483156684800", 
} 
}]; 

arr.forEach(function(obj){ 
    obj.left.server_info = obj.right; 
    delete obj.right; 
}); 
+0

我正在尋找一種方法在查詢中直接執行它,但也可以。 – Zephy

+0

但是你粘貼javascript代碼而不是mysql查詢 –

+0

什麼?我發佈了RethinkDB查詢返回的文檔。 – Zephy

1

我一無所知rethinkdb,但如果它是確定的,你可以用普通的JavaScript做到這一點,與Object.assign

var newObject = Object.assign(result[0].left, {server_info: result[0].right)}; 

如果你願意,你可以,當然,寫入新的對象在結果本身:

result = Object.assign(result[0].left, {server_info: result[0].right)}; 
+0

RethinkDB已經實現了這個,它被稱爲'zip',我之所以不能使用它,是因爲它會替換具有相同名稱的屬性(或者在這種情況下保留它們)。 編輯:我指的是編輯前的代碼,目前應該工作。 – Zephy

+0

@Zephy對,我現在看到你想要什麼,我更新了答案。 – rpadovani