gpt4 book ai didi

javascript - Express js 与 mysql 只更新传递的字段

转载 作者:行者123 更新时间:2023-12-03 01:00:00 27 4
gpt4 key购买 nike

这几天我一直在尝试设置 REST API。我一直在关注一个很棒的教程,它确实帮助我理解了它们的大部分工作原理(发送请求、获取响应等)。然而它使用 MongoDB 和 Mongoose。我正在使用MySQL。我的表和 View 有点复杂,所以我决定不使用 ORM,而是使用 mysql2 包并自己进行查询。我目前一直在尝试 PATCHPUT 。我的前端功能的一部分有时只发送 1 或 2 个需要更新的字段(来 self 收集的所有内容的 PATCH)。因此,我使用了 MongoDB 和 Mongoose 教程的一部分来构建对象数组并将它们传递到 connection.query 中。这是我的补丁路线:

router.patch('/:txnid', (req, res, next) => { //UPDATE fields that are passed
const txnid = req.params.txnid;

for (const field of req.body) {
fieldsToUpdate[field.name] = field.value;
}

connection.query("UPDATE QuoteToClose SET ? WHERE qb_TxnID = '" + txnid + "'", { fieldsToUpdate }, function (error, results) {
if (error) {
res.status(404).json({
message: error,
field: fieldsToUpdate
});
} else {
res.status(201).json({
"record_count" : results.length,
"error": null,
"response": results
});
}
});
});

有时我会传递 1 个字段,有时我会传递 2 个字段。在这种情况下,我只传递 1 个字段。我在 POSTMAN 中构建我的正文并通过 PATCH 请求发送它:

[
{
"name": "margin",
"value": "50"
}
]

当我通过 POSTMAN 运行此命令时,出现错误:

{
"message": {
"code": "ER_BAD_FIELD_ERROR",
"errno": 1054,
"sqlState": "42S22",
"sqlMessage": "Unknown column 'fieldsToUpdate' in 'field list'"
},
"field": {
"margin": "50"
}
}

但我不知道为什么。不幸的是,我没有使用 Mongoose,所以我不知道是否有什么东西依赖于我所缺少的东西。我的正文解析器设置如下:

app.use(bodyParser.urlencoded({extended: false}));
app.use(bodyParser.json());

我想动态构建该查询,而不是指定每个字段(这样看起来更干净。

最佳答案

嗨,我正在使用这个库构建动态查询。 https://www.npmjs.com/package/flexqp

let result = await qp.executeUpdatePromise('update user set ?  where user.id = ?', [user, user.id], dbconfig);

user是一个有很多子元素的对象,库会自动填充

查询例如更新用户集 name = 'xxx' , address ='xxx' ..etc where user.id = 1

关于javascript - Express js 与 mysql 只更新传递的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52673600/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com