From 4ca05b8b7de0a4ea84bb5900b44cb237077b041c Mon Sep 17 00:00:00 2001 From: xiaji Date: Sat, 13 Jun 2026 21:10:22 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E4=B8=A4=E4=B8=AA=20bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1. ArticleRead.user_id 改 Integer(users.id 是 Integer,不是 BigInteger) alembic 0007 同样改 Integer 2. ArticleDetail.vue toggleRead 重复 catch 块导致 build 失败 (edit 时新加的 catch 跟 toggleStar 残留的 catch 撞了) --- backend/alembic/versions/0007_article_reads.py | 4 ++-- backend/app/models/article_read.py | 5 +++-- frontend/src/views/ArticleDetail.vue | 3 --- 3 files changed, 5 insertions(+), 7 deletions(-) diff --git a/backend/alembic/versions/0007_article_reads.py b/backend/alembic/versions/0007_article_reads.py index 3c6080f..4909c03 100644 --- a/backend/alembic/versions/0007_article_reads.py +++ b/backend/alembic/versions/0007_article_reads.py @@ -25,8 +25,8 @@ depends_on = None def upgrade() -> None: op.create_table( "article_reads", - sa.Column("user_id", sa.BigInteger, nullable=False), - sa.Column("article_id", sa.BigInteger, nullable=False), + sa.Column("user_id", sa.Integer, nullable=False), # users.id 是 Integer + sa.Column("article_id", sa.BigInteger, nullable=False), # articles.id 是 BigInteger sa.Column("read_at", sa.DateTime(timezone=True), nullable=False, server_default=sa.text("now()")), sa.PrimaryKeyConstraint("user_id", "article_id", name="pk_article_reads"), sa.ForeignKeyConstraint( diff --git a/backend/app/models/article_read.py b/backend/app/models/article_read.py index 94e0031..bc07853 100644 --- a/backend/app/models/article_read.py +++ b/backend/app/models/article_read.py @@ -9,12 +9,13 @@ 注意: - 删文章时 ondelete=CASCADE 自动清掉已读记录 - 这是和 bookmarks 并列的"用户行为"表 +- user_id 是 Integer(users.id 是 Integer),article_id 是 BigInteger(articles.id 是 BigInteger) """ from __future__ import annotations from datetime import datetime -from sqlalchemy import BigInteger, DateTime, ForeignKey, Index, func +from sqlalchemy import BigInteger, DateTime, ForeignKey, Index, Integer, func from sqlalchemy.orm import Mapped, mapped_column from app.database import Base @@ -24,7 +25,7 @@ class ArticleRead(Base): __tablename__ = "article_reads" user_id: Mapped[int] = mapped_column( - ForeignKey("users.id", ondelete="CASCADE"), primary_key=True + Integer, ForeignKey("users.id", ondelete="CASCADE"), primary_key=True ) article_id: Mapped[int] = mapped_column( BigInteger, diff --git a/frontend/src/views/ArticleDetail.vue b/frontend/src/views/ArticleDetail.vue index cd36835..a55dd4c 100644 --- a/frontend/src/views/ArticleDetail.vue +++ b/frontend/src/views/ArticleDetail.vue @@ -73,9 +73,6 @@ async function toggleRead() { article.value.is_read = wasRead message.error(e?.response?.data?.title || '操作失败') } - } catch (e: any) { - message.error(e?.response?.data?.title || '操作失败') - } } function fmtTime(s?: string | null) {