vue.js - 我怎样才能使结构进入其中包含对象数组的对象?
问题描述
我在前端使用 Vuejs,在后端使用 Go 语言。我的data
变量具有以下格式的数据。
var data = {
software_type: this.$props.selected,
selected_solutions: this.fromChildChecked,
};
通过console.log(data)
在前端做,我得到以下输出。
在后端,我有这种格式的结构:
type Technology struct {
ID primitive.ObjectID `json:"_id,omitempty" bson:"_id,omitempty"`
SoftwareType string `json:"software_type" bson:"software_type"`
SelectedSolutions struct {
selectedSolutions []string
} `json:"selected_solutions" bson:"selected_solutions"`
}
我很确定我遇到的问题,这可能是由于我发送的数据格式和我制作的结构不同。我正在使用 MongoDB 作为数据库。通过提交表单,数据以以下格式进入数据库,这意味着,我得到一个空对象selected_solutions
。
{
"_id":{"$oid":"5f5a1fa8885112e153b5a890"},
"software_type":"Cross-channel Campain Mangment Software",
"selected_solutions":{}
}
这是我希望在 DB 上使用的格式或类似于下面的格式。
{
"_id":{"$oid":"5f5a1fa8885112e153b5a890"},
"software_type":"Cross-channel Campain Mangment Software",
"selected_solutions":{
Adobe Campaign: ["Business to Customer (B2C)", "Business to Business (B2B)"],
Marin Software: ["E-Government", "M-Commerce"],
}
}
如何更改 struct 以使其与我尝试发送的数据兼容?预先感谢您的任何帮助。
编辑:这就是我提交数据的方式。
postUserDetails() {
var data = {
software_type: this.$props.selected,
selected_solutions: this.fromChildChecked,
};
console.log(data);
const requestOptions = {
method: "POST",
headers: { "Content-Type": "application/x-www-form-urlencoded" },
body: JSON.stringify(data),
};
fetch("http://localhost:8080/technology", requestOptions)
.then((response) => {
response.json().then((data) => {
if (data.result === "success") {
//this.response_message = "Registration Successfull";
console.log("data posted successfully");
} else if (data.result === "er") {
// this.response_message = "Reagestraion failed please try again";
console.log("failed to post data");
}
});
})
.catch((error) => {
console.error("error is", error);
});
},
mounted() {
this.postUserDetails();
},
这是后端控制器的功能。
//TechnologyHandler handles checkbox selection for technology section
func TechnologyHandler(w http.ResponseWriter, r *http.Request) {
w.Header().Set("content-type", "application/json")
w.Header().Add("Access-Control-Allow-Credentials", "true")
var technologyChoices model.Technology
//var selectedSolution model.Selected
//reads request body and and stores it inside body
body, _ := ioutil.ReadAll(r.Body)
//body is a json object, to convert it into go variable json.Unmarshal()is used ,
//which converts json object to User object of go.
err := json.Unmarshal(body, &technologyChoices)
var res model.TechnologyResponseResult
if err != nil {
res.Error = err.Error()
json.NewEncoder(w).Encode(res)
return
}
collection, err := db.TechnologyDBCollection()
if err != nil {
res.Error = err.Error()
json.NewEncoder(w).Encode(res)
return
}
_, err = collection.InsertOne(context.TODO(), technologyChoices)
if err != nil {
res.Error = "Error While Creating Technology choices, Try Again"
res.Result = "er"
json.NewEncoder(w).Encode(res)
return
}
res.Result = "success"
json.NewEncoder(w).Encode(res)
return
}
解决方案
根据您的数据库结构,selected_solutions
是一个包含字符串数组的对象:
type Technology struct {
ID primitive.ObjectID `json:"_id,omitempty" bson:"_id,omitempty"`
SoftwareType string `json:"software_type" bson:"software_type"`
SelectedSolutions map[string][]string `json:"selected_solutions" bson:"selected_solutions"`
}
推荐阅读
- python - 在计算运行中出现的次数时创建不重复的新列表
- python - 在脚本错误的末尾给出总金额
- python-3.x - SyntaxError:无效的语法有人知道吗?
- python - Pynput:检测全局热键块 wxPython 框架
- microsoft-graph-api - Microsoft Graph API - beta/users/{id}/photo 上的 MailboxNotEnabledForRESTAPI 404 错误
- javascript - 如何以 webm 格式而不是 mkv 格式保存视频
- google-sheets - 使用 Google 表格中的 COUNTIF 和总和计算财务总和
- python - 上传的图像显示在表单数据中,但不显示在 Flask 中的文件数据
- javascript - 来自经过身份验证的 ArcGIS Server 的图层未显示在 Leaflet Web 地图中
- powershell - 远程 Bitlocker 状态扫描 - CSV 输出