其余API补丁一次仅包含1个字段

时间:2018-09-28 14:27:51

标签: javascript rest express

我正在开发一个内联网格编辑器,该网格编辑器在更新网格中的单个值后会调用Express Rest API。因此,当用户更改网格中的单个字段时,我正在调用PATCH请求以更新该字段。但是我不知道如何只更新一个字段。当我尝试尝试更新它们时,如果没有值,它将使数据库中的值为NULL。我只想更新一个字段,并且只更新一个传入API(可以是任何字段)的字段。这是我的修补方法:

// Update record based on TxnID
router.patch('/editablerecords/update', function (req, res) {
    let qb_TxnID = req.body.txnid
    let type = req.body.type;
    let margin = req.body.margin;



    if (!qb_TxnID) {
        return res.status(400).send({ error:true, message: 'Please provide TxnID' });
    }

    connection.query("UPDATE pxeQuoteToClose SET ? WHERE qb_TxnID = '" + qb_TxnID + "'", { type, margin  }, function (error, results, fields) {
        if(error){
            res.send(JSON.stringify({"status": 500, "error": error, "response": null })); 
            //If there is error, we send the error in the error section with 500 status
        } else {
            res.send(JSON.stringify({ error: false, data: results, message: 'Record updated.' }));
            //If there is no error, all is good and response is 200OK.
        }
    });
});

我一次只会更新1个字段,typemargin,但不会同时更新两个字段(在这种情况下)。如果我仅发送一个字段,则另一个字段为空。我尝试阅读connection.query()方法,但是找不到任何信息,而且我不理解它如何构建查询,只是传递给它的每个req.body.value都用于构建查询。查询。

我是构建此REST API的新手,感觉自己缺少一些简单的东西。

编辑:我想添加,我可能想更新两个字段,但是我也想一次更新一个字段。谢谢

1 个答案:

答案 0 :(得分:0)

对于每个the RFCPATCH调用的主体不应该是更新的表示形式,而应该是一组应用于资源的指令。

  

PATCH方法要求在      请求实体应用于请求所标识的资源,      URI。变更集以一种称为“补丁”的格式表示      文档”由媒体类型标识。

https://tools.ietf.org/html/rfc6902上找到了一个很好的建议标准,用于将PATCH与JSON结合使用。使用该标准的补丁文件示例为:

   [
     { "op": "test", "path": "/a/b/c", "value": "foo" },
     { "op": "remove", "path": "/a/b/c" },
     { "op": "add", "path": "/a/b/c", "value": [ "foo", "bar" ] },
     { "op": "replace", "path": "/a/b/c", "value": 42 },
     { "op": "move", "from": "/a/b/c", "path": "/a/b/d" },
     { "op": "copy", "from": "/a/b/d", "path": "/a/b/e" }
   ]