1

我有一个通过ember-couchdb-kit与 Couchbase Lite 交互的Ember 应用程序

我想在桌面上运行它。我过去成功使用过 CouchDB,但想迁移到 Couchbase Server 以更好地控制数据访问。

Ember-couch-kit 依赖于all视图来返回特定类型的元素。例如,我的应用程序有习惯,用于加载这些习惯的 url 是:

/db/_design/habit/_view/all?include_docs=true&key="habit"

地图函数如下所示:

function( doc ) { emit( doc.type, null ) }

据我所知,CouchDB 和 Couchbase Lite 返回以下形式的结果:

{
  "total_rows":19,
  "offset":0,
  "rows":[
    {
      "id":"ce236fe89785d8190abc37e01c001087",
      "key":"habit",
      "value":null,
      "doc":{
        "_id":"ce236fe89785d8190abc37e01c001087",
        "_rev":"5-1a6274e9f8020e03277f764fd3fb6bba",
        "type":"habit",
        "name":"Test",
        "color":"#000000",
        "events":["ce236fe89785d8190abc37e01c00267d",…]
      }
    },
    ⋮

另一方面,Couchbase Server 返回以下形式的文档:

{
  "total_rows":1541,
  "rows":[
    {
      "id":"habit:150mg buoropion",
      "key":"habit",
      "value":null,
      "doc":{
        "meta":{
          "id":"habit:150mg buoropion",
          "rev":"1-00000700e0f3239a0000000000000000",
          "expiration":0,
          "flags":0
        },
        "json":{
          "type":"habit",
          "name":"150mg Buoropion",
          "color":"#D4A475"
        }
      }
    },
    ⋮

有没有办法使用 Sync Gateway 来获得兼容的视图?目前,我正在通过将文档作为map.

4

1 回答 1

0

在您的服务器视图中,您应该发出您需要的数据作为第二个参数,并对第一个参数进行查询

function (doc, meta) { 
    emit(meta.id, [ "name": doc.name,"color": doc.color ] );
}

view paramerters;
startkey = 'habit:150mg buoropion'
endkey = 'habit:150mg buoropion' + '\uefff'
于 2014-10-23T22:37:34.403 回答