Ich habe gerade auf die neueste Version des Data Explorer aktualisiert, bevor ich dies gepostet habe, und ich kann bestätigen, dass dieses Problem für mich immer noch besteht.
Im Data Explorer Plugin gibt es eine Funktion, mit der Sie Abfragen für Gruppen freigeben können. Ich habe dies für die Abfrage getan, die aufeinanderfolgende besuchte Tage zählt, da Benutzer unbedingt wissen möchten, wie nahe sie an den Abzeichen für xxx besuchte Tage sind.
Der Fehler scheint durch die gesendete Anfrage verursacht zu werden (hier zeige ich den Netzwerkinspektor unter Firefox):
Es scheint die Parameterwerte nicht zu aktualisieren, während sie eingegeben werden (username=null, min_days=10 sind die Standardparameter, wenn Sie die Seite laden). Die Konsole gibt auch den Fehler “Uncaught TypeError: t is undefined” aus, wenn Sie entweder Text in das Feld username eingeben oder den Wert von min_days ändern. Diese Zeile verursacht den Fehler:
Dies ist das Beste, was ich tun kann, um das Problem zu verfolgen, ohne das Repository zu forken und jede Zeile zu debuggen. Ich wollte nur das Problem melden und bin auch neugierig, ob andere das gleiche Problem haben.
Danke @piffy für den Bericht. Wir haben kürzlich einige Änderungen am data-explorer-Plugin vorgenommen, daher könnte dies durchaus gültig sein. Ich habe mehrere Abfragen mit einer Benutzernamenseingabe getestet und bin nicht auf das in OP verlinkte Problem gestoßen. Könnten Sie Ihre Abfrage hier posten, damit ich sie testen kann?
--[params]
-- string :username
-- int :min_days = 10
WITH consecutive_visits AS (
SELECT user_id,
visited_at,
-- Der Wert von s ist für jede Gruppe aufeinanderfolgender Tage derselbe
visited_at - (DENSE_RANK() OVER (PARTITION BY user_id ORDER BY visited_at))::int s
FROM user_visits
WHERE user_id = (SELECT id FROM users WHERE username = :username)
)
SELECT
MIN(visited_at) period_start,
COUNT(*) AS consecutive_days,
MAX(visited_at) period_end
FROM consecutive_visits
GROUP BY user_id, s
HAVING COUNT(*) >= :min_days
ORDER BY period_start DESC
Ich habe es mit aktiviertem Safe Mode (nur offizielle Plugins) versucht und habe dasselbe Problem.
Als zusätzlichen Tipp, während Isaac sich das ansieht, können Sie auch den Parameter user_id verwenden, um eine schicke Auto-Vervollständigungs-Parameterbox zu erhalten. Z. B.:
-- [params]
-- user_id :user
-- int :min_days = 10
WITH consecutive_visits AS (
SELECT user_id,
visited_at,
-- Der Wert von s ist für jede Gruppe aufeinanderfolgender Tage gleich
visited_at - (DENSE_RANK() OVER (PARTITION BY user_id ORDER BY visited_at))::int s
FROM user_visits
WHERE user_id = :user
)
SELECT
MIN(visited_at) period_start,
COUNT(*) AS consecutive_days,
MAX(visited_at) period_end
FROM consecutive_visits
GROUP BY user_id, s
HAVING COUNT(*) >= :min_days
ORDER BY period_start DESC