我剛開始使用Elixir,所以我想我在這裏有一些基本的誤解。下面是代碼...使用elixir-mongo的Mongodb身份驗證
defmodule Mdb do
def connect(collection, this_db \\ "db-test") do
{:ok, mongo} = Mongo.connect("db-test.some-mongo-server.com", 12345)
db = mongo |> Mongo.db(this_db)
db |> Mongo.auth("user", "secretpassword")
db
end
end
我開始iex -S mix
,當我嘗試db = Mdb.connect("users")
我得到
** (UndefinedFunctionError) undefined function: Mongo.auth/3 Mongo.auth(%Mongo.Db{auth: nil, mongo: %Mongo.Server{host: 'db-test.some-mongo-server.com', id_prefix: 12641, mode: :passive, opts: %{}, port: 12345, socket: #Port<0.5732>, timeout: 6000}, name: "db-stage", opts: %{mode: :passive, timeout: 6000}}, "user", "secretpassword") (mdb_play) lib/mdb.ex:7: Mdb.connect/2
我貌似Mongo.auth/3未定義,但這對我來說毫無意義。任何人都可以指出我的錯誤嗎? 感謝您的幫助
不知道這個問題,但要注意函數的最後兩行:我從來沒有使用過'Mongo'庫,但我敢肯定,這樣做'DB |> Mongo.auth (...)'而不將結果分配給任何東西都毫無意義。通常在Elixir中,'Mongo.auth(db,...)'將返回一個DB的新的* authenticated *實例。不要將'db |> Mongo.auth(...)'與'必要的''db.auth()':)混淆。 – whatyouhide 2014-12-13 19:12:18