我有一个viewCount
专栏table_1
。每次具有新 IP 地址的用户访问该页面时,我都会将viewCount
列增加 1。这是为了记录有多少人访问了该页面。在表中table_2
,我保留了用户的 IP 地址以及行的 ID table_1
。以下是当我进行更新查询时列的外观和可能的场景案例,我目前正在尝试对其进行优化。
tabel_1
:
------------------
| id | viewCount |
------------------
| 1 | 35 |
------------------
table_2
:
----------------------
| tb1_id | ipAddress |
----------------------
| 1 | 0.1.0.1 |
----------------------
可能的场景:IP 地址为的用户0.1.0.0
访问该页面。我查询 table_2 以查看是否存在具有 tb1_id 和当前用户 IP 地址的行。如果不是,我将不存在的用户的 IP 地址保存到table_2
并增加 viewCount in table_1
。
我的问题是我怎样才能只进行 1 次查询(即一次访问数据库)并执行此操作?
这是我想出的代码,但虽然工作得很好,但需要不止 1 次
const [rows] = await db.query(
`
SELECT
ipAddress
FROM
PageViews
WHERE
ipAddress = ?
`,
['ipAddress']
);
if (rows.length === 0) {
await db.query(
`
INSERT INTO
PageViews
SET
projectId = ?
AND
ipAddress = ?
`,
[projectId, ipAddress]
);
await db.query(
`
UPDATE
Project
SET
viewCount = viewCount + 1
WHERE
id = ?
`,
[projectId]
);
}
任何有助于提高代码效率和减少访问数据库的帮助将不胜感激