gpt4 book ai didi

elixir - (FunctionClauseError) Access.get/3 中没有匹配的函数子句

转载 作者:行者123 更新时间:2023-12-04 12:43:35 24 4
gpt4 key购买 nike

我是 Elixir 的新手,目前正在从 Ruby 进行交易。我正在努力解决我遇到的错误,因为 Elixir 没有 object.class ,我正在努力了解我返回的数据类型以及如何对其进行故障排除。

无论如何,我正在尝试从 CSV 中播种数据库,但出现错误

下面是我的代码

File.stream!('users_departs.csv')
|> Stream.drop(1)
|> CSV.decode(headers: [:name, :title, :departments])
|> Enum.take(10
|> Enum.each( fn(x) -> IO.inspect(x[:ok]) end )

Error

** (FunctionClauseError) no function clause matching in Access.get/3

The following arguments were given to Access.get/3:

# 1
{:ok,
%{
departments: "Sales|Marketing",
name: "John Smith",
title: "Customer Service"
}}

# 2
:ok

# 3
nil
(elixir) lib/access.ex:306: Access.get/3
(stdlib) erl_eval.erl:670: :erl_eval.do_apply/6
(stdlib) erl_eval.erl:878: :erl_eval.expr_list/6

我有 2 个模型,用户和部门,我想先为部门设定种子,然后创建一个用户,然后关联用户-部门映射,但我正在努力通过这一步。

任何帮助将不胜感激

最佳答案

Access.get/3 是一个 Elixir 功能,根据文档:

Gets the value for the given key in a container (a map, keyword list, or struct that implements the Access behaviour)



检查错误消息,
{:ok,
%{
departments: "Sales|Marketing",
name: "John Smith",
title: "Customer Service"}}

不是“ map 、关键字列表或结构等”。它是一个元组,由 :ok 组成原子和 map 。

看来, CSV.decode(headers: [:name, :title, :departments])返回 {:ok, value_decode} .

所以你不能用管道把它传送到 Enum.take/2 照原样。

只是
{:ok, decode_csv} =
File.stream!('users_departs.csv')
|> Stream.drop(1)
|> CSV.decode(headers: [:name, :title, :departments])

decode_csv
|> Enum.take(10)
|> Enum.each( fn(x) -> IO.inspect(x[:ok]) end )

关于elixir - (FunctionClauseError) Access.get/3 中没有匹配的函数子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50671952/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com