如何解决如何在其中具有对象数组的对象中创建struct?
我在前端使用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作为数据库。
通过提交表单,数据以以下格式发送到DB,这意味着我正在为selected_solutions
获得一个空对象。
{
"_id":{"$oid":"5f5a1fa8885112e153b5a890"},"software_type":"Cross-channel Campain Mangment Software","selected_solutions":{}
}
这是我希望在数据库上使用的格式,或与下面类似的格式。
{
"_id":{"$oid":"5f5a1fa8885112e153b5a890"},"selected_solutions":{
Adobe Campaign: ["Business to Customer (B2C)","Business to Business (B2B)"],Marin Software: ["E-Government","M-Commerce"],}
}
如何更改结构以使其与我要发送的数据兼容?预先感谢您的帮助。
编辑:这就是我提交数据的方式。
postUserDetails() {
var data = {
software_type: this.$props.selected,};
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"`
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。