未连接到 MongoDB 数据库
Not connecting to MongoDB database
我正在尝试使用邮递员向 Mux 路由器发出 POST 请求。但是每次我尝试执行 POST 请求时,PostMan 总是告诉我“错误:套接字挂断”。
然后在 Go 中我也收到以下错误:
http: panic serving [::1]:64995: runtime error: invalid memory address or nil pointer dereference
代码:
type Person struct {
ID primitive.ObjectID `json:"_id,omitempty" bson:"_id,omitempty"`
Firstname string `json:"firstname,omitempty" bson:"firstname,omitempty"`
Lastname string `json:"lastname,omitempty" bson:"lastname,omitempty"`
}
var client *mongo.Client // create mongo client
func CreatePersonEndpoint(w http.ResponseWriter, r *http.Request){
w.Header().Add("Content-Type", "application/json")
var person Person
json.NewDecoder(r.Body).Decode(&person)
collection := client.Database("People").Collection("people")
ctx, _ := context.WithTimeout(context.Background(), 5*time.Second)
result, _:= collection.InsertOne(ctx, person)
json.NewEncoder(w).Encode(result)
}
func main(){
ctx, _ := context.WithTimeout(context.Background(), 5*time.Second)
client, _ := mongo.Connect(ctx, options.Client().ApplyURI("mongodb+srv://username:password[@cluster0.51awc.mongodb.net/test"))
client.Connect(ctx)
client.Ping(ctx, readpref.Primary())
databases, _ := client.ListDatabaseNames(ctx, bson.M{})
fmt.Println(databases)
r := mux.NewRouter()
r.HandleFunc("/person", CreatePersonEndpoint).Methods("POST")
http.ListenAndServe(":8000", r)
}
以下是我在 MongoDB 中创建的可用数据库:
[Hotels People 管理员本地]
在“人物”数据库下我创建了一个“人物”集合。
您正在使用 :=
运算符在 main
函数中创建一个新的 client
变量。使用 =
分配给全局 client
变量。
我正在尝试使用邮递员向 Mux 路由器发出 POST 请求。但是每次我尝试执行 POST 请求时,PostMan 总是告诉我“错误:套接字挂断”。
然后在 Go 中我也收到以下错误:
http: panic serving [::1]:64995: runtime error: invalid memory address or nil pointer dereference
代码:
type Person struct {
ID primitive.ObjectID `json:"_id,omitempty" bson:"_id,omitempty"`
Firstname string `json:"firstname,omitempty" bson:"firstname,omitempty"`
Lastname string `json:"lastname,omitempty" bson:"lastname,omitempty"`
}
var client *mongo.Client // create mongo client
func CreatePersonEndpoint(w http.ResponseWriter, r *http.Request){
w.Header().Add("Content-Type", "application/json")
var person Person
json.NewDecoder(r.Body).Decode(&person)
collection := client.Database("People").Collection("people")
ctx, _ := context.WithTimeout(context.Background(), 5*time.Second)
result, _:= collection.InsertOne(ctx, person)
json.NewEncoder(w).Encode(result)
}
func main(){
ctx, _ := context.WithTimeout(context.Background(), 5*time.Second)
client, _ := mongo.Connect(ctx, options.Client().ApplyURI("mongodb+srv://username:password[@cluster0.51awc.mongodb.net/test"))
client.Connect(ctx)
client.Ping(ctx, readpref.Primary())
databases, _ := client.ListDatabaseNames(ctx, bson.M{})
fmt.Println(databases)
r := mux.NewRouter()
r.HandleFunc("/person", CreatePersonEndpoint).Methods("POST")
http.ListenAndServe(":8000", r)
}
以下是我在 MongoDB 中创建的可用数据库: [Hotels People 管理员本地]
在“人物”数据库下我创建了一个“人物”集合。
您正在使用 :=
运算符在 main
函数中创建一个新的 client
变量。使用 =
分配给全局 client
变量。