我有一個時間字段一個struct,可能是無返回值來嵌入建議here。結構與SQLX不從數據庫
而是更新Order
對象(我不想泄露DB代碼到模型層)的,我想我可以在PgOrder
使嵌入秩序和改變PickupTime
類型:
type PgOrder struct {
Order
PickupTime pq.NullTime
}
問題是當我簡單地更新數據庫中的Order
,然後轉過頭來獲取該訂單時,返回的PickupTime
爲空。
// update
func (pg Postgres) UpdateOrderPickupTime(order *Order, pickupTime time.Time) error {
_, err := pg.Exec(`UPDATE orders SET pickup_time = $1 WHERE id = $2`, pickupTime, order.ID)
return err
}
// retrieve
func (pg Postgres) GetOrder(orderID DatabaseID) (*Order, error) {
pgOrder := PgOrder{}
err := pg.Get(&pgOrder, `SELECT * FROM orders WHERE id = $1`, orderID)
if err == sql.ErrNoRows {
return nil, nil
}
... // at this point pgOrder.PickupTime is 0001-01-01 00:00:00 +0000 UTC
}
如果我把一個斷點愨更新和檢索,我可以檢查數據庫,看到的值被保存爲2017-04-20 12:05:37-04
。所以問題必須在檢索部分。如果我明白從docs開始,sqlx應該能夠處理嵌入式結構。
什麼是數據庫本身的價值:所以就像你與
json
標籤一樣,你可以用db
標籤這樣做呢? '0001-01-01 00:00:00 +0000 UTC'看起來像從數據庫中讀取零時間 - 如果讀取了NULL,我認爲它是'nil'。 – Flimzy數據庫中的值看起來像'2017-04-20 12:05:37-04' – tir38
只是猜測,但您是否嘗試更改'PgOrder'字段的順序?也就是說,在底部嵌入'Order'並在其上面具有'PickupTime pq.NullTime'。像這樣:https://play.golang.org/p/_QdVNbWcqS – mkopriva