반응형
노드 express js의 mysql 행을 동적으로 업데이트하는 방법
행을 업데이트하기 위해 쿼리하는 방법은 다음과 같습니다.
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;
프로젝트 내 어디에나 내보내기 및 사용 가능
언급URL : https://stackoverflow.com/questions/63804322/how-to-dynamically-update-row-in-mysql-on-node-express-js
반응형
'source' 카테고리의 다른 글
Panda DataFrame의 더 많은 열을 보려면 출력 디스플레이를 확대하려면 어떻게 해야 합니까? (0) | 2022.09.23 |
---|---|
Java의 이중 10진 형식 (0) | 2022.09.22 |
숫자에 대한 Larabel 규칙 유효성 검사 (0) | 2022.09.22 |
MySql에서 DATETIME 필드의 날짜 부분에 인덱스를 만드는 방법 (0) | 2022.09.22 |
Vue.js의 'data:'와 'data()'의 차이점은 무엇입니까? (0) | 2022.09.22 |