在erlang视图中发出嵌套哈希值

时间:2012-02-09 14:23:49

标签: erlang couchdb

我尝试在我的视图中发出postal_country,我不知道如何在erlang中完成此操作。

这是我的文件的结构:

{
   ...
   "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)
  }
}

这是我在erlang中尝试过的:

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 个答案:

答案 0 :(得分:1)

您需要按照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.