2016-09-29 27 views
0

無法從rethinkDB中創建的表中獲取數據。Deepstream不從RethinkDB表中獲取數據


我在retinkDB中創建了一個新表 - items

並用數據填充它:

r.db('test').table('items').insert([ 
    {name: 'qqq'}, 
    {name: 'www'}, 
    {name: 'eee'} 
]) 

.getList()永遠不會返回表中的數據:

client.record.getList('items') // '.getEntries()' always return [] 

我真的不明白爲什麼.getList('items')沒有從items表中返回的數據。


假設,這是因爲項目結構:當你創建通過deepstream入境,入境的結構是這樣的:

[ 
... 
    { 
    "_d": { 
    "id": "qqq" 
    "name": 'qqq' 
    }, 
    "_v": 0, 
    "ds_id": "qqq" 
    } 
... 
] 

但礦井構造僅僅是:

[ 
    { 
    "id": 'qqq' 
    "name": 'qqq' 
    } 
] 

我的問題是:如何用rethinkDB中的數據創建表(通過腳本),我們將與深水合作?

回答

-1

我找到了一個孤獨。

所有表首先應適當primaryKey === 「ds_id」 創建:

r.db('test') 
    .tableCreate('items', 
    { 
     primaryKey: 'ds_id' 
    }) 

之後,你必須與deepstream狀結構插入數據:

r.db('test').table('items').insert([ 
    { 
    "_d": { 
     "id": r.uuid(), 
     "name": "qqq" 
    }, 
    "_v": 0, 
    "ds_id": r.uuid() 
} 
]) 

PS使_d.id等於ds_id使用:

r.db('test').table('items').forEach(function(c) { 
    return r.db('test').table('items').get(c('ds_id')).update(function(row) { 
    return {_d: {id: row('ds_id')}}; 
    }); 
}) 

這是愚蠢的,但我不知道該怎麼做的更優雅的方式。

-1

deepstream旨在爲您管理數據。簡單地說

var bmw = ds.record.getRecord('cars/bmw') 

deepstream將創建一個名爲cars表,存儲與寶馬在其主鍵條目。你不希望你自己創建表。

+0

如何在這種情況下創建數據表?硬編碼代碼中的所有數據?我詢問了腳本,因爲我必須爲DB進行遷移,並且需要一張表格,其中包含從開始的數據 –

+1

爲此,我假設您的解決方案如下所述。儘管您也可以遍歷數據並通過客戶端庫將其加載到深層流中 – wolframhempel