Thanks @Diego Medina It worked for me. On Thursday, November 9, 2017 at 12:19:14 AM UTC+5:30, Diego Medina wrote: > > replied on the mgo list > > https://groups.google.com/d/topic/mgo-users/F3LbWdyPGDc/discussion > > (pasted here to save a click) > > Hi, > > > the checkbox is unchecked and form is submitted to save. Now as I have > applied "omitempty" > > if the checkbox is unchecked, your client side code should send "false" to > the go server, so omitempty is not applied because it is not empty, it is > false, so saving it to mongo will actually update the field. > > for truly optional fields, what I do is, declare the fields as pointers to > the type, so, you would have > > type Coupon struct { > Id *int `json:"id,omitempty" bson:"_id,omitempty"` > Name *string `json:"name,omitempty" bson:"name,omitempty"` > Code *string `json:"code,omitempty" bson:"code,omitempty"` > Description *string `json:"description,omitempty" > bson:"description,omitempty"` > Status *bool `json:"status" bson:"status"`// I assume this > is also optional > MaxUsageLimit *int `json:"max_usage_limit,omitempty" > bson:"max_usage_limit,omitempty"` > SingleUsePerUser *bool `json:"single_use_per_user,omitempty" > bson:"single_use_per_user,omitempty"` > } > > > the bson/json Un/marshaller will then omit the values that are nil > pointers, so now yo ucan tell the difference between a false checkbox, and > a REST POST that did not include the field at all > > Hope this helps. > > Diego > > On Wednesday, November 8, 2017 at 12:46:39 AM UTC-5, Amandeep Kaur wrote: >> >> >> Hi >> >> I am working on a Coupon form in which I have some optional fields. >> >> *Introduction:* >> >> All the form field values are received as JSON and mapped into a Golang >> structure. In the structure, I have added an "omitempty" flag with every >> field. So only those form values are mapped which have some appropriate >> value, rest of the values like 0, " ", false are ignored by the structure. >> >> Here is the Golang structure >> >> type Coupon struct { >> Id int `json:"id,omitempty" bson:"_id,omitempty"` >> Name string `json:"name,omitempty" bson:"name,omitempty"` >> Code string `json:"code,omitempty" bson:"code,omitempty"` >> Description string `json:"description,omitempty" >> bson:"description,omitempty"` >> Status bool `json:"status" bson:"status"` >> MaxUsageLimit int `json:"max_usage_limit,omitempty" >> bson:"max_usage_limit,omitempty"` >> SingleUsePerUser bool `json:"single_use_per_user,omitempty" >> bson:"single_use_per_user,omitempty"`} >> >> *Problem:* >> >> 1. >> >> When I save this form for the very first time, the form values that >> are appropriate are saved into the Mongodb. >> 2. >> >> Now I want to update that form and suppose there is a check box, >> which was checked at the time of saving data. While updating form, the >> checkbox is unchecked and form is submitted to save. Now as I have >> applied >> "omitempty" flag in the structure, so its not mapping the empty value to >> the checkbox field. Since the value is not mapped into the structure, its >> not getting saved into the Database. >> 3. >> >> When a user edits the form for the second time, it sees the same >> check box as checked. (But practically, the value should be updated to >> the >> DB and the check box should be displayed as unchecked.) >> 4. >> >> I am using the same form data (in JSON format) in a REST API. In API, >> while updating form data, if I mention only those values which are >> required >> and don't pass the values which I don't want to update, then MongoDB is >> overriding the whole document with the provided required values(Even >> those >> values are also being overridden which I don't want to update as well as >> don't pass in the API). >> >> *Requirement:* >> >> In future, I want to expose the REST API, So I don't want this thing to >> be happened there. That is why I don't want to remove "omitempty" flag from >> the structure fields. >> >> Is there any way to save the empty form values or API data fields to the >> DB while using omitempty flag in the structure? >> >> Thanks! >> >
-- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.