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

标签 vue.js go

我在前端使用 Vuejs,在后端使用 Go 语言。我的 data变量具有以下格式的数据。

var data = {
    software_type: this.$props.selected,
    selected_solutions: this.fromChildChecked,
  };
通过做console.log(data)在前端,我得到以下输出。
enter image description here
在后端,我有这种格式的结构:
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.js - 我怎样才能使结构进入其中包含对象数组的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63830374/

相关文章:

javascript - Vuetify 抽屉导航问题

javascript - 数组分配后Vue中的无限更新循环

javascript - 使用 EventBus 在组件之间传递数据

go - 为什么我的 goroutines 没有启动?

go - 如何停止所有等待 sync.Cond 的 goroutines?

go - 如何在Golang中写入stdin?

javascript - 我们如何在 Firestore 数据库中搜索 5,000 个用户?

vue.js - 如何在 VueJS 中初始化 Swiper?

go - 一个案例可以同时执行多个案例吗?

asp.net - 抓取由 asp.net/AJAX (__doPostBack) 管理的 html 分页