如何在node express js上动态更新mysql中的行
这是我查询以更新行的方式,其工作原理如下:如何在node express js上动态更新mysql中的行,mysql,node.js,express,mariadb,Mysql,Node.js,Express,Mariadb,这是我查询以更新行的方式,其工作原理如下: const [rows, meta] = await db.query( ` UPDATE Portfolio SET title = ?, infoText = ?, devPeriod = ?, tags = ? WHERE id = ?
const [rows, meta] = await db.query(
`
UPDATE
Portfolio
SET
title = ?,
infoText = ?,
devPeriod = ?,
tags = ?
WHERE
id = ?
`,
[title, infoText, Number(devPeriod), tags, Number(portfolioId)]
);
return rows;
但有时,根据用户的需求,我必须查询以仅更新特定列。例如,用户可能只想编辑devPeriod或标记和infoText。
如何实现这一点?我建议创建一个更新对象,指定要更新的字段和相关值。然后,您可以从中创建查询和参数 可以根据用户输入填充更新对象 例如:
async function updatePortfolio(db, portfolioId, update) {
const query = "Update Portfolio SET " + Object.keys(update).map(key => `${key} = ?`).join(", ") + " WHERE id = ?";
const parameters = [...Object.values(update), portfolioId];
console.log("updatePortfolio: Running query:", query);
const [rows, meta] = await db.query(query, parameters);
return rows;
}
// Add or remove fields as you require.
update = {
title: "Some Title",
infoText: "Infotext",
devPeriod: 10,
tags: "tags"
}
updatePortfolio(db, 1, update);
// Add or remove fields as you require.
update = {
title: "Some Title",
tags: "tags"
}
updatePortfolio(db, 2, update);
在向我的同事寻求帮助后,他们将我的应用程序介绍到Knex.js,以使动态查询构建更容易。所以我就这么做了。 从那时起,我们一直在使用它进行动态查询。对于这种类型的任务非常有效。配置也很简单:
import knex from 'knex';
const queryBuilder = knex({ client: 'mysql' });
export default queryBuilder;
导出它并在项目中的任何位置使用它