无法更新MongoDB中的文档

问题描述 投票:-1回答:1

我无法弄清楚如何在.net web api中更新文档。我在网上阅读了很多教程,但仍然没有成功。其中之一是this site

data: () => {
    return {
        templates: [],
        newTemplate: '',
        title: 'Choose a template',
        selected: {},
        chosen: {
            Id: '5a3cd8e0762cb02118232752',
            max: '5',
            rules:'2'
        },
    };
},

将数据发送到api的方法

updateTemplate: function (_id) {
                axios({
                    method: 'put',
                    url: 'http://localhost:57802/api/updateleavetemplate',
                    params: { Id: _id },
                    data: {
                        id: this.chosen.Id,
                        max: this.chosen.max,
                        rules: this.chosen.rules
                    }
                }).then(function (response) { console.log(response); })
                    .catch(function (error) {
                        console.log(error);
                    });
            },

API控制器

[Route("api/updateleavetemplate/")]
[HttpPut]
public void UpdateLeave(String Id, LeavesTemplate UpdatedModel)
{
    _LeavesTemplateRepository.EditLeavesTemplate(Id, UpdatedModel);
}

从存储库编辑方法

public void EditLeavesTemplate(String Id, LeavesTemplate leavestemplate)
{
    LeavesTemplate t = FindLeavesTemplateById(new ObjectId(Id));
    t.max = leavestemplate.max;
    t.rules = leavestemplate.rules;
    var filter = Builders<LeavesTemplate>.Filter.Eq(s => s.Id, leavestemplate.Id);
    var result = context.LeavesTemplates.ReplaceOneAsync(filter, t);

}
c# asp.net mongodb axios
1个回答
0
投票

我只是通过以下代码替换存储库中的方法:

public void EditLeavesTemplate(String Id, LeavesTemplate leavestemplate)
        {
            LeavesTemplate z = FindLeavesTemplateById(new ObjectId(Id));
            z.rules = leavestemplate.rules;
            z.max = leavestemplate.max;    
            z.Id = ObjectId.Parse(Id);
            ReplaceOneResult e = context.LeavesTemplates.ReplaceOne(Builders<LeavesTemplate>.Filter.Eq(r => r.Id, z.Id), z, new UpdateOptions() { IsUpsert = true });
            Console.WriteLine(e.IsAcknowledged);

        }
© www.soinside.com 2019 - 2024. All rights reserved.