我正在尝试将Guardian实现到我的API中并通过它执行登录以获取JWT。我正在看的教程是here。问题是使用类似于他们在示例中使用的用户模型实现登录。 Model代码如下所示:
defmodule PushflightServer.User do
use PushflightServer.Web, :model
use Ecto.Repo
import Ecto.Query
alias PushflightServer.Repo
schema "users" do
field :name, :string
field :email, :string
field :encrypted_password, :string
field :password, :string, virtual: true
field :verify_token, :string
field :verify_date, Ecto.DateTime
timestamps
end
def from_email(nil), do: { :error, :not_found }
def from_email(email) do
IO.write("Before email")
IO.inspect(email)
Repo.one(User, email: email)
end
如果我在凤凰城内或直接在 iex -S mix 中调用from_email,我会收到以下错误:
user = PushflightServer.User.from_email(“rob@json.com”)
**(Protocol.UndefinedError)协议Ecto.Queryable没有为User实现,给定的模块不存在 (ecto)lib / ecto / queryable.ex:33:Ecto.Queryable.Atom.to_query / 1 (ecto)lib / ecto / repo / queryable.ex:90:Ecto.Repo.Queryable.execute / 5 (ecto)lib / ecto / repo / queryable.ex:15:Ecto.Repo.Queryable.all / 4 (ecto)lib / ecto / repo / queryable.ex:44:Ecto.Repo.Queryable.one/4
我必须遗漏一些简单的东西,但我找不到任何关于这种情况发生的文件。使用Repo插入数据工作正常。有什么想法吗?
答案 0 :(得分:5)
您需要将function onPrompt(results) {
if (results.buttonIndex === 1) {
alert('sucess');
} else {
alert('fail');
}
}
完全命名为User
,或者您可以使用快捷方式PushflightServer.User
答案 1 :(得分:2)
您应该引用具有命名空间的模块
def from_email(email) do
PushflightServer.one(PushflightServer.User, email: email)
end