【问题标题】:Chicago Boss boss_db:find on mongodbChicago Boss boss_db:在 mongodb 上查找
【发布时间】:2014-09-30 07:22:53
【问题描述】:

我正在尝试了解 boss_db 模块以访问我在芝加哥老板设置的 mongodb

我找到了一个使用来自 Here 的 boss_db 访问该数据的示例

示例:

Puppy = boss_db:find("puppy-1"),
io:format("Puppy's name: ~p~n", [Puppy:name()]).

但是当我用我的代码尝试这一切时

Cl= boss_db:find(clientList, [], [{limit,1}]),
io:format("Puppy's name: ~p~n", [Cl:datablock()]),

我收到此错误消息

[{erlang,apply,
     [[{clientList,"clientList-53e30e8b10af5d1503000287",
           <<"Sheet1">>,<<"Jason@email.com.au\n">>,
           <<131,108,0,0,0,3,104,2,107,0,6,70,105,101,108,100,49,
             107,...>>}],
      datablock,[]],
     []},
 {pigeon_greeting_controller,template,3,
     [{file,
          "/home/jason/pigeon/src/controller/pigeon_greeting_controller.erl"},
      {line,57}]},
 {boss_web_controller,call_controller_action,3,
     [{file,"src/boss/boss_web_controller.erl"},{line,363}]},
 {boss_web_controller,apply_action,4,
     [{file,"src/boss/boss_web_controller.erl"},{line,355}]},
 {boss_web_controller,execute_action_inner,9,
     [{file,"src/boss/boss_web_controller.erl"},{line,334}]},
 {boss_web_controller_handle_request,process_dynamic_request,
     4,
     [{file,"src/boss/boss_web_controller_handle_request.erl"},
      {line,242}]},
 {boss_web_controller_handle_request,process_request,4,
     [{file,"src/boss/boss_web_controller_handle_request.erl"},
      {line,228}]},
 {boss_web_controller_handle_request,set_timer,7,
     [{file,"src/boss/boss_web_controller_handle_request.erl"},
      {line,148}]}]

我知道我正在收到返回的数据,因为我可以做到

[{clientList, _,_,_, Datablock}] = boss_db:find(clientList, [], [{limit,1}]),
io:format("data block is : ~p~n", [Datablock]).

它会毫无问题地返回

我的偏好是通过字段名称而不是模式匹配来查找它,因为模式可能会在某些时候发生变化。

我是在查看旧示例还是此示例仅适用于关系数据库。我很难找到有一些简单示例说明如何执行此操作的网站

【问题讨论】:

  • 你的模型是什么样的?我质疑 CL:datablock() 是否由模型上的字段 Datablock 支持。您的模型中的 DataBlock 是否可能会生成访问器函数 data_block()?

标签: mongodb chicagoboss


【解决方案1】:

您引用的代码使用 boss_db:find/1 返回一条记录。您的代码使用 Boss_db:find/3 返回记录列表。

你上面的例子,用我的数据库,重现了这个问题

1> CL = boss_db:find(customer, [], [{limit,1}]).
... snip ...

2> CL:id().
** exception error: bad argument
 in function  apply/3
    called as apply([{customer,"customer-1","TEST1","First Test Customer",
                               "red",
                               {{2014,8,12},{15,7,21}},
                               ["2014",45,
                                ["0",56],
                                45,"12",32,"15",58,
                                ["0",55],
                                58,"21",46,"486989"]}],
                    id,[])

但认识到 boss_db 返回一个列表,并且一切正常:

1> [CL]= boss_db:find(customer, [], [{limit,1}]).
... snip ...
2> CL:id().
"customer-1"

希望对你有帮助

【讨论】:

    猜你喜欢
    • 2018-07-15
    • 2013-05-04
    • 2016-09-18
    • 2017-03-12
    • 2015-02-03
    • 2023-03-20
    • 2012-09-07
    • 1970-01-01
    • 2018-05-06
    相关资源
    最近更新 更多