我有 2 个方法,用于 GET
和 POST
。
第一个是:
var Join map[string]int
func MapTheFields(c *gin.Context) {
var data []string
//Open the csv file
csvFile, _ := os.Open("customers.csv")
reader := csv.NewReader(csvFile)
line, _ := reader.ReadAll()
for i := 0; i < len(line[0]); i++ {
Join = map[string]int{
line[0][i]: i,
}
data = append(data, line[0][i])
}
GetSuccessResponse(c, "The Mappings are:", data)
}
第二个也和第一个类似。它只是将值保存到数据库中。
我一直面临的问题是,我必须将从 csv 文件中获取的字段映射到我项目中的字段,为此我制作了一个名为 Join
的映射如上所示,我正在访问第二个函数中 line 的值作为
行[i][加入["姓氏"]]
但我得到的 Join["Last Name"]
的值为 0
,即使它的值为 1
,无论我在哪里我使用连接作为索引,值为零,我总是只得到前 4 个值,然后是索引越界错误。
休息代码是:
func ImportCustomerData(c *gin.Context) {
//Open the csv file
csvFile, _ := os.Open("customers.csv")
reader := csv.NewReader(csvFile)
var (
user models.User
customer models.Customer
address models.UserAddress
addresses []models.UserAddress
people []models.Customer
users []models.User
)
line, _ := reader.ReadAll()
for i := 1; i < len(line[0]); i++ {
//Initialize address details
address.Address = line[i][Join["address"]]
address.City = line[i][Join["City"]]
address.State = line[i][Join["State"]]
address.Zipcode = line[i][Join["Postal Code"]]
savedAddress := SaveNewAddress(address, merchantDb)
//Initalize user details
user.FirstName = line[i][Join["First Name"]]
user.LastName = line[i][Join["Last Name"]]
user.CompanyName = line[i][Join["Company Name"]]
user.EmailId = line[i][Join["Email"]]
user.PhoneNumber = line[i][Join["Phone"]]
}
}
Postman 中第一个函数的输出是:
{
“回复”: {
“代码”:200,
“api_status”:1,
"message": "映射是:",
“数据”: [
“名”,
“姓”,
“公司名”,
“电子邮件”,
“地址”,
“城市”,
“状态”,
“邮政编码”,
“电话”,
“创建日期”,
“条纹ID”,
“首次预订日期”,
“最后预订日期”,
“上次预订频率”,
“下次预订日期”,
“笔记”,
“顾客ID”
]
}
}
我哪里做错了?
最佳答案
您每次都在 MapTheFields()
中分配一个新 map :
for i := 0; i < len(line[0]); i++ {
Join = map[string]int{
line[0][i]: i,
}
data = append(data, line[0][i])
}
Join
类型的map,应该先分配,这样声明Join:
Join = make(map[string]int) //declaration can be global
将 MapTheFields()
中的代码片段替换为以下代码片段:
for i := 0; i < len(line[0]); i++ {
Join[line[0][i]] = i
data = append(data, line[0][i])
}
关于rest - 如何使用 Golang 实现导入数据功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52664182/