【发布时间】:2019-07-28 23:09:22
【问题描述】:
我正在学习使用 PostgreSQL 和 GORM。我正在创建一个结构,连接到数据库,并尝试写入数据库。
源代码:
db, err := gorm.Open("postgres","user=superuser password=ojcafizp123 dbname=gorm sslmode=disable")
if err != nil {
panic(err.Error())
}
defer db.Close()
database := db.DB()
err = database.Ping()
if err != nil {
panic(err.Error())
}
fmt.Println("Connection to PostgreSQL was successful!")
port := ":3000"
r := chi.NewRouter()
r.Get("/api/test",Test)
http.ListenAndServe(port, r)
}
func CreateRate (w http.ResponseWriter, r *http.Request) {
db, err := gorm.Open("postgres","user=superuser password=ojcafizp123 dbname=gorm sslmode=disable")
cure := Crypto{"BTC","USD",10000,100}
if db.NewRecord(cure) {
err = db.Create(&cure).Error
if err != nil{
panic(err.Error())
}
}
}
结构:
type Crypto struct {
Cur1 string `json:"cur1"`
Cur2 string `json:"cur2"`
Rate float64 `json:"rate"`
Timestamp int64 `json:"timestamp"`
}
试图在数据库中找到我的记录:
func Test (w http.ResponseWriter, r *http.Request) {
db, err := gorm.Open("postgres","user=superuser password=ojcafizp123 dbname=gorm sslmode=disable")
var testcur Crypto
db.First(&testcur)
fmt.Println(testcur)
if err != nil {
fmt.Println("No testcur detected")
}
}
但是得到了这个:
与 PostgreSQL 的连接成功! {0 0}
(/home/superuser/go/src/CryptoProject/main.go:97) [2019-07-27 05:09:10] pq:关系“cryptos”不存在
连接正常,但底座仍然是空的。
【问题讨论】:
-
只是添加到@khampson 的答案中,您实际上并没有调用
CreateRate,因此即使您创建了表,而没有先向其中插入一些东西,Test仍然会失败。还有一件事,你在Test处理程序中处理错误的方式是错误的,首先你忽略了从Open返回的错误,然后,当你调用First时,而不是检查是否产生了错误您检查从Open返回的那个。
标签: postgresql go crud