выдача значения вложенного хэша в представлении эрланга - PullRequest
0 голосов
/ 09 февраля 2012

Я пытаюсь испустить postal_country, на мой взгляд, и я понятия не имею, как это будет сделано в эрланге.

это структура моего документа:

{
   ...
   "postal_address": {
       "postal_country": "BE"
       ...
   }
}

это js, который я хочу перевести:

function(doc) {
  if (doc['ruby_class'] == 'Company' && doc['postal_address']['postal_country']) {
    emit(doc['postal_address']['postal_country'], 1)
  }
}

вот что я пробовал в эрланге:

fun({Doc}) ->
  case proplists:get_value(<<"ruby_class">>, Doc) of
    <<"Company">> ->
      Addr = proplists:get_value(<<"postal_address">>, Doc, null), 
      Key = proplists:get_value(<<"postal_country">>, Addr, null),
      Emit(Key, 1);
    _ ->
    ok
  end
end.

1 Ответ

1 голос
/ 09 февраля 2012

Вам нужно развернуть адрес, как предложено в https://stackoverflow.com/a/2422631/453605:

fun({Doc}) ->
  case proplists:get_value(<<"ruby_class">>, Doc) of
    <<"Company">> ->
      case proplists:get_value(<<"postal_address">>, Doc) of
        {Address} ->
          Country = proplists:get_value(<<"postal_country">>, Address),
          Emit(Country, 1);
        _ ->
          ok
      end;
    _ ->
      ok
  end
end.
...