Перевести представления javascript CouchDB на erlang

Мне нужна помощь с переводом следующих представлений CouchDB из javascript в erlang. Мне они нужны в erlang, потому что в javascript представление использует всю доступную память стека и вызывает сбой couchjs (см. Этот отчет об ошибке https://issues.apache.org/jira/browse/COUCHDB-893 ).

Текущие функции карты, которые у меня есть в javascript:

sync / transaction_keys

function(doc) {
  if(doc.doc_type == "Device") {
      for(key in doc.transactions)
          emit(key, null);
  }
}

и sync / transcation

function(doc) {
  if(doc.doc_type == "Device") {
      for(key in doc.transactions) {
          t = doc.transactions[key];
          t.device = doc.device;
          emit(key, t);
     }
  }
}

Пример документа:

{
   "_id": "fcef7b5c-cbe6-31af-8363-2b446a7e4cf2",
   "_rev": "3-c90abd075404a75744fd3e5e4f04ebad",
   "device": "fcef7b5c-cbe6-31af-8363-2b446a7e4cf2",
   "doc_type": "Device",
   "transactions": {
       "79fe8630-c0c0-30c6-9913-79b2f93e3e6e": {
           "timestamp": 1309489169533,
           "version": 10008,
           "some_more_data" : "more_data"
       }
       "e4678930-c465-76a6-8821-75a3e888765a": {
           "timestamp": 1309489169533,
           "version": 10008,
           "some_more_data" : "more_data"
       }
   }
}

Обычно sync / transaction_keys испускает все ключи словарь транзакций и синхронизация / транзакция выделяют все записи в словаре транзакций.

К сожалению, я никогда раньше не использовал Erlang, и мне нужно переписать этот код довольно скоро, так что любая помощь приветствуется.

Заранее спасибо.

9
задан Simon 23 July 2011 в 13:28
поделиться