猿问

Golang+mgo - 如何更新数据库文档?

我有一个 angularJS 前端,它使用 $resource 使用 HTTP 方法向我的 Go 服务器发送请求。我想在发送 PATCH 时更新现有的数据库条目。我需要向 GO 服务器提供多个数据字段。 angularJS 客户端应该如何发送数据,用什么格式?从 mgo doc 我发现下面的代码要更新。更新字段是否可以采用 Go 结构,该结构将从客户端接收的数据中解析并跳过空字段?


        change := mgo.Change{

            Update:    bson.M{"$inc": bson.M{"n": 1}},

            Upsert:    false,

            Remove:    false,

            ReturnNew: true,

        }

        info, err = col.Find(M{"_id": id}).Apply(change, &doc)

        fmt.Println(doc.N)

我计划将数据作为查询发送到的 angularjs 代码。


            UpdateOneSchedule.update({bkresources:dbResources},

            function(data){

                //on success

            },

            function(httpResponse){

                //on error

                if(httpResponse.status === 409){

                }

            });


慕妹3146593
浏览 178回答 1
1回答

BIG阳

是的,这是可能的。一个简单的例子是:var myStruct struct {    Name string `json:"name" bson:"name,omitempty"`    Age  int    `json:"age" bson:"age"`}您将数据解析为 myStruct 并提供相同的对象进行更新。change := mgo.Change{    Update:    bson.M{"$inc": bson.M{"n": 1}, "$set": bson.M{"name": myStruct.Name}},    Upsert:    false,    Remove:    false,    ReturnNew: true,}info, err = col.Find(M{"_id": id}).Apply(change, &doc)fmt.Println(doc.N),omitempty 将以与 JSON 相同的方式工作,这意味着,如果它为空,则不会被解析,例如:myStruct.Name = ""myStruct.Age = 23col.Insert(myStruct)这将创建以下 BSON 文档:{    id: ObjectId("573da7dddd73171e42a84045"),    age: 23}
随时随地看视频慕课网APP

相关分类

Go
我要回答