0

无法从我刚刚在 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表中返回数据。


认为这是因为条目结构:当您通过深度流创建条目时,条目的结构如下:

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

但我的结构只是:

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

我的问题是:如何使用 rethinkDB 中的数据(通过脚本)创建我们将与 deepstream 一起使用的表?

4

2 回答 2

-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')}};
  });
})

这很愚蠢,但我不知道如何以更优雅的方式做到这一点。

于 2016-09-29T12:55:50.083 回答
-1

deepstream 旨在为您管理数据。简单地说

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

deepstream 将创建一个名为的表cars,并在其中存储一个主键为 bmw 的条目。您不会被期望自己创建表。

于 2016-09-30T05:40:06.287 回答