我有代码,当我尝试这个调用时 console write undefined: insertContractData
。我尝试更改此代码,但在Invalid memory address or nil pointer dereference
我无法理解如何正确执行时出错。
我认为我写的结构不正确,我仍然无法编译这两天,请我不这样做。
我使用官方的 Mongo-go 驱动程序连接到语言的骄傲,所以我无法更准确地连接到 Plaza 本身作为官方文件。如果这一切都是我的,它原来是连接的。并且单独地,连接每个集合,它不起作用这个代码通常应该以某种方式开始工作,但是工作没有发生,或者更确切地说它工作不正确,对结构发誓,所以它对一个方法发誓未命名这里是如何解决它,我不知道,但我希望有一些解决这个问题的方法在这里感谢您的帮助。
package main
import (
"context"
"encoding/json"
"log"
"net/http"
"time"
"go.mongodb.org/mongo-driver/bson"
"go.mongodb.org/mongo-driver/mongo"
"go.mongodb.org/mongo-driver/mongo/options"
)
type Data struct {
Number string `json:"number"`
Driver string `json:"driver"`
Auto string `json:"auto"`
Tariff string `json:"tariff"`
Begindate string `json:"begindate"`
Enddate string `json:"enddate"`
Continues bool `json:"continues"`
MoreInfo string `json:"moreInfo"`
Status string `json:"status"`
}
type MyClient struct {
mc *mongo.Client
db *mongo.Database
}
func setupResponse(w http.ResponseWriter, req *http.Request) {
(w).Header().Set("Access-Control-Allow-Origin", "*")
(w).Header().Set("Access-Control-Allow-Methods", "POST, GET, OPTIONS, PUT, DELETE")
(w).Header().Set("Access-Control-Allow-Headers", "Accept, Content-Type, Content-Length, Accept-Encoding, X-CSRF-Token, Authorization")
}
func NewMyClient(url, db string) (mc *MyClient, err error) {
defer func() {
if err != nil {
mc = nil
}
}()
mc = &MyClient{}
if mc.mc, err = mongo.NewClient(options.Client().ApplyURI(url)); err != nil {
return
}
ctx, _ := context.WithTimeout(context.Background(), 10*time.Second)
err = mc.mc.Connect(ctx)
if err != nil {
log.Fatal(err)
}
defer mc.mc.Disconnect(ctx)
mc.db = mc.mc.Database(db)
return
}
func (mc *MyClient) insertContractData(w http.ResponseWriter, r *http.Request) {
setupResponse(w, r)
var err error
var data Data
err = json.NewDecoder(r.Body).Decode(&data)
if err != nil {
return
}
podcastsCollection := mc.db.Collection("test")
ctx, _ := context.WithTimeout(context.Background(), 10*time.Second)
defer mc.mc.Disconnect(ctx)
_, err = podcastsCollection.InsertOne(ctx, bson.D{
{"number", data.Number},
{"driver", data.Driver},
{"auto", data.Auto},
{"tariff", data.Tariff},
{"begindate", data.Begindate},
{"enddate", data.Enddate},
{"continues", data.Continues},
{"moreInfo", data.MoreInfo},
{"status", data.Status},
})
if err != nil {
log.Fatal(err)
}
}
func main() {
var mc MyClient
http.HandleFunc("/insertContractData", insertContractData)
//http.HandleFunc("/selectContractData", selectContractData)
http.ListenAndServe(":8081", nil)
}