簡體   English   中英

貓鼬子文檔的HTTP PATCH語義

[英]HTTP PATCH semantics with mongoose sub-documents

我有一個Map文檔,其中包含許多Layer子文檔,並且想要實現HTTP PATCH,因此只有給定的JSON屬性才可以更新Layer子文檔。 以下代碼有效,但是我必須指定每個可以更改的屬性。 有更好的方法嗎?

var update = {};
if (req.body.name !== undefined)
    update['layers.$.name'] = req.body.name;
if (req.body.isDefault !== undefined)
    update['layers.$.isDefault'] = req.body.isDefault;
if (req.body.isPublic !== undefined)
    update['layers.$.isPublic'] = req.body.isPublic;

Map.model.findOneAndUpdate({_id: req.params.mapId, 'layers._id': req.params.layerId}, update, callback);

您可以創建如下函數:

function updateParams(reqParams,additionalInfo)
{
    var update = {};
    for(var paramName in reqParams)
    {
        if(reqParams.hasOwnProperty(paramName))
        {
            if(reqParams[paramName]!==undefined)
            {
                update[additionalInfo+paramName] = reqParams[paramName];
            }
        }
    }
    return update;

}

updateParams(req.body,'layers.$.');

我考慮過JsonPatch這個項目將json補丁轉換為mongo原子更新:jsonpatch-to-mongodb

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM