用于播种 JSON 数据的 Ecto 语法
Ecto syntax for seeding JSON data
我是 Elixir 和 Phoenix 的新手,我不知道在我的 seeds.exs 文件中使用正确的语法将 JSON 插入 Postgres JSON 列。这是我要插入的示例。
Repo.insert! %Language{
page: "accounts",
code: "en-us",
mode: "all",
language: { "username_email" : "Username or email address",
"password" : "Password",
"invalid_username_password" : "Invalid username or password"
}
}, prefix: :lookups
但我没有尝试过。我只需要将文字 JSON 插入数据库。
这段代码有几个问题。
Elixir 地图具有以下语法:
map = %{foo: 42, bar: :baz}
注意它的百分号,键和冒号之间缺少 space 并且键确实没有引号。当需要使用字符串作为键时,仍然可以使用 hashrocket 语法:
map = %{"foo" => 42}
但这不是您需要的。
此外,根据发布的错误消息,您可能忘记了为您的 Language
结构设置别名 and/or 使用完全限定的名称。总结一下,正确的代码是:
Repo.insert! %MyData.Language{
page: "accounts",
code: "en-us",
mode: "all",
language: %{
username_email: "Username or email address",
password: "Password",
invalid_username_password: "Invalid"
}
}, prefix: :lookups
我是 Elixir 和 Phoenix 的新手,我不知道在我的 seeds.exs 文件中使用正确的语法将 JSON 插入 Postgres JSON 列。这是我要插入的示例。
Repo.insert! %Language{
page: "accounts",
code: "en-us",
mode: "all",
language: { "username_email" : "Username or email address",
"password" : "Password",
"invalid_username_password" : "Invalid username or password"
}
}, prefix: :lookups
但我没有尝试过。我只需要将文字 JSON 插入数据库。
这段代码有几个问题。
Elixir 地图具有以下语法:
map = %{foo: 42, bar: :baz}
注意它的百分号,键和冒号之间缺少 space 并且键确实没有引号。当需要使用字符串作为键时,仍然可以使用 hashrocket 语法:
map = %{"foo" => 42}
但这不是您需要的。
此外,根据发布的错误消息,您可能忘记了为您的 Language
结构设置别名 and/or 使用完全限定的名称。总结一下,正确的代码是:
Repo.insert! %MyData.Language{
page: "accounts",
code: "en-us",
mode: "all",
language: %{
username_email: "Username or email address",
password: "Password",
invalid_username_password: "Invalid"
}
}, prefix: :lookups