首页 文章

Golang mgo - 如何更新db文件?

提问于
浏览
1

我有一个angularJS前端使用$ resource将请求使用HTTP方法发送到我的Go服务器 . 我想在发送PATCH时更新现有的db条目 . 我需要为GO服务器提供多个数据字段 . angularJS客户端应该以什么格式发送数据?从mgo doc我发现下面的代码更新 . Update字段是否可以采用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){
                }
            });

1 回答

  • 1

    是的,这是可能的 . 一个简单的例子是:

    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 = 23
    col.Insert(myStruct)
    

    这将创建以下BSON文档:

    {
        id: ObjectId("573da7dddd73171e42a84045"),
        age: 23
    }
    

相关问题