Go 将类型*字符串转换为类型bson.ObjectId
我需要将类型字符串转换为bson.ObjectId, 这是我当前的代码:Go 将类型*字符串转换为类型bson.ObjectId,go,Go,我需要将类型字符串转换为bson.ObjectId, 这是我当前的代码: type CampaignUpdateBody struct { CampaignName *string `json:"campaign_name" bson:"campaign_name"` FromName []string `json:"from_name" bson:"from_name"` FromEmail *string `json:"from_e
type CampaignUpdateBody struct {
CampaignName *string `json:"campaign_name" bson:"campaign_name"`
FromName []string `json:"from_name" bson:"from_name"`
FromEmail *string `json:"from_email" bson:"from_email"`
ReplyEmail *string `json:"reply_email" bson:"reply_email"`
Subject []string `json:"subject" bson:"subject"`
BodyText *string `json:"body_text" bson:"body_text"`
BodyHTML *string `json:"body_html" bson:"body_html"`
SmtpList *string `json:"smtp_list_id" bson:"smtp_list"`
EmailList *string `json:"email_list_id" bson:"email_list"`
}
// LetterTemplateUpdate updates some fields of the letter template.
func (s *Service) CampaignUpdate(c *gin.Context) {
id := bson.ObjectIdHex(c.Param("id"))
if !id.Valid() {
c.JSON(http.StatusBadRequest, gin.H{"error": "id has wrong format"})
return
}
var body CampaignUpdateBody
if err := c.BindJSON(&body); err != nil {
c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
return
}
token := c.MustGet(tokenKey).(*models.Token)
params := storage.CampaignUpdateParams{}
params.ID = id
//..........................
params.BodyText = body.BodyText
params.BodyHTML = body.BodyHTML
params.SmtpList = body.SmtpList
params.EmailList = body.EmailList
stor := c.MustGet(storageKey).(storage.Storage)
if err := stor.CampaignUpdate(token.UserID, params); err != nil {
c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})
return
}
c.JSON(http.StatusOK, gin.H{})
}
这是我当前的错误:
..\httpservice\campaigns.go:134:19: cannot use body.SmtpList (type *string) as t
ype bson.ObjectId in assignment
..\httpservice\campaigns.go:135:19: cannot use body.EmailList (type *string) as
type bson.ObjectId in assignment
我需要将body.SmtpList类型转换为bson.ObjectId中的*字符串,如何实现这一点?根据文档,
bson.ObjectId
定义为
type ObjectId string
鉴于此,您应该能够使用
params.SmtpList = bson.ObjectId(*body.SmtpList)
这是一种类型转换,因为ObjectId
的底层类型是string
请注意,在执行此操作之前,您需要确保body.SmtpList
不是nil
,否则代码会死机