vue.js之我怎样才能使结构进入其中包含对象数组的对象

zhujiabin 阅读:162 2025-06-02 22:19:02 评论:0

我在前端使用 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(); 
    }, 
这是后端 Controller 的功能。
//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"` 
} 


标签:VUE
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

关注我们

一个IT知识分享的公众号