2013-05-17 2 views
0

erlang에서 mongodb에 대한 쓰기 작업을 처음 시도하고 있으며 mongodb_erlang 드라이버를 사용하기위한 제안 사항이 here입니다. 그러나, 나는이 REPO에서 테스트 중 하나와 유사한 매우 간단한 모듈을 만들었습니다 bson 및 MongoDB를 시작하는 초기화()를 호출 한 후mongodb_erlang 드라이버가 작동하는 데 문제가 발생했습니다.

 
-module(mongo_test). 
-compile(export_all). 


init() -> 
    application:start(bson), 
    application:start(mongodb). 

insert_and_find() -> 
    Host = {localhost, 27017}, 
    Conn = mongo_connection:start_link(Host, []), 
    Database = baseball, 
    Collection = teams, 
    Teams = mongo:do(safe, master, Conn, Database, fun() -> 
                  mongo:insert(Collection, [ 
                        {name, >, home, {city, >, state, >}, league, >}, 
                        {name, >, home, {city, >, state, >}, league, >}, 
                        {name, >, home, {city, >, state, >}, league, >}, 
                        {name, >, home, {city, >, state, >}, league, >} 
                        ]), 
    4 = mongo:count(Collection, []), 
    Teams = find(Collection, {}), 

    NationalTeams = [Team || Team >], 
    NationalTeams = find(Collection, {league, >}), 
    2 = mongo:count(Collection, {league, >}), 

    TeamNames = [bson:include([name], Team) || Team >, state, >}}) 
    end). 







%%private 
find(Collection, Selector) -> 
    find(Collection, Selector, []). 
find(Collection, Selector, Projector) -> 
    Cursor = mongo:find(Collection, Selector, Projector), 
    Result = mongo_cursor:rest(Cursor), 
    mongo_cursor:close(Cursor), 
    Result. 

그러나, 나는 그 insert_and_find 호출하고 다음과 같은 오류를받을 :

 
** exception exit: {{function_clause,[{gen,call, 
              [{ok,}, 
              '$gen_call', 
              {request,baseball, 
                {insert,teams, 
                  [{name,>,home, 
                    {city,>,state,>}, 
                    league,>,'_id', 
                    {>}}]}}, 
              infinity], 
              [{file,"gen.erl"},{line,146}]}, 
             {gen_server,call,3,[{file,"gen_server.erl"},{line,184}]}, 
             {mongo_connection,request,3, 
                 [{file,"src/mongo_connection.erl"},{line,48}]}, 
             {mongo,write,4,[{file,"src/mongo.erl"},{line,251}]}, 
             {mongo,write,1,[{file,"src/mongo.erl"},{line,234}]}, 
             {mongo,insert,2,[{file,"src/mongo.erl"},{line,78}]}, 
             {mongo,insert,2,[{file,"src/mongo.erl"},{line,75}]}, 
             {erl_eval,do_apply,6,[{file,"erl_eval.erl"},{line,573}]}]}, 
        {gen_server,call, 
           [{ok,}, 
           {request,baseball, 
              {insert,teams, 
                [{name,>,home, 
                 {city,>,state,>}, 
                 league,>,'_id', 
                 {>}}]}}, 
           infinity]}} 
    in function gen_server:call/3 (gen_server.erl, line 188) 
    in call from mongo_connection:request/3 (src/mongo_connection.erl, line 48) 
    in call from mongo:write/4 (src/mongo.erl, line 251) 
    in call from mongo:write/1 (src/mongo.erl, line 234) 
    in call from mongo:insert/2 (src/mongo.erl, line 78) 
    in call from mongo:insert/2 (src/mongo.erl, line 75) 

오류는 매우 불명확하며 온라인에서 도움을 얻을 수 없었습니다. 어떤 제안이라도 대단히 감사하겠습니다.

최고.

답변

1

Conn = mongo_connection:start_link(Host, []),{ok, Conn} = mongo_connection:start_link(Host, []),

+0

응답 해 주셔서 감사합니다. 나는 실제로 그것을 처음 시도한 다음 위에 포함 된 옵션을 포함 된 테스트에서 찾았습니다. 다시 전환하면이 오류가 발생합니다. ** 예외 오류 : 정의되지 않음 function mongo : connect/1 in function mongo_test : insert_and_find/0 (mongo_test.erl, line 12) – RockyMountainHigh

+0

A-ha! 하지만 너는 나를 올바른 길로 가게했다. 그것은 : {ok, Conn} = mongo_connection : start_link (호스트, []), 고마워요! – RockyMountainHigh

관련 문제