我正在开发一个内联网格编辑器,该网格编辑器在更新网格中的单个值后会调用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个字段,type
或margin
,但不会同时更新两个字段(在这种情况下)。如果我仅发送一个字段,则另一个字段为空。我尝试阅读connection.query()
方法,但是找不到任何信息,而且我不理解它如何构建查询,只是传递给它的每个req.body.value
都用于构建查询。查询。
我是构建此REST API的新手,感觉自己缺少一些简单的东西。
编辑:我想添加,我可能想更新两个字段,但是我也想一次更新一个字段。谢谢
答案 0 :(得分:0)
对于每个the RFC,PATCH
调用的主体不应该是更新的表示形式,而应该是一组应用于资源的指令。
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" }
]