- 2026/08/13 Thu
-
TweetVault②
アクセス改善
バックエンドへのアクセスが localhost になっていたのをポートフォワードで捻じ曲げていたけど、ポートフォワードなしで動くようにする。
frontend/src/lib/api.ts に下記コードがあり、.env に NEXT_PUBLIC_API_URL を定義してやればいいのねと思ったけどダメ。const API_BASE_URL = (process.env.NEXT_PUBLIC_API_URL || 'http://localhost:8080') + '/api';
それならと、この定義を直接書き換えてみたけどダメ。は?
調べてみると、frontend/.next/server/app/page.js で API_BASE_URL が設定されていた。
で、そこの元はどこだと探すと docker-compose.yml。frontend: environment: - NEXT_PUBLIC_API_URL=http://localhost:8080
ここを仮想環境のアドレスに書き換えて解決。データ反映の改善
タグを付与した後、しばらくしないと反映されないのをどうにかする。
調べた感じ、- DBには即時反映されている
- APIを直接叩いてみると、単体取得では即時反映されているのに、ページ取得では即時反映されていない
なんでページ取得だと即時反映されないんだと思いながらDBの構造眺めてたらマテリアライズドビューが。
マテリアライズドビュー経由かどうかの差異だなこれ。
以下の対処で解決。- マテリアライズドビューと同じ内容のビューを別名で定義
- 取得先が通常のビューからになるよう向き先を変更
backend/internal/models/materialized_view.go@@ -31,3 +31,3 @@ func (BookmarkView) TableName() string { - return "bookmark_views" + return "bookmark_views_normal" }未整理ブックマークの表示
タグを付与していないデータだけを表示したい。
ダミーのタグを作成し、絞り込み条件でそのタグを指定された場合はタグのないデータを抽出するよう対応。backend/internal/services/bookmark_service.go@@ -202,3 +202,5 @@ // Apply tag filter if provided - if tag != "" { + if tag == "untagged" { + query = query.Where("tags_json::jsonb = ?", "[]") + } else if tag != "" { query = query.Where("tags_json::jsonb @> ?", fmt.Sprintf(`[{"name":"%s"}]`, tag))