我想在我当前的应用程序上使用DataSync,使用IHP0.16。我相信我已经遵循了FrontController和Routes中的所有安装步骤。
我有一个characters表,它有一个连接到users表的user_id列。我已经在characters表上设置了生成以下SQL的策略:
CREATE POLICY "Users can manage their characters" ON characters USING (user_id = ihp_user_id()) WITH CHECK (user_id = ihp_user_id());
ALTER TABLE characters ENABLE ROW LEVEL SECURITY;尝试在JavaScript控制台中运行此命令
await query("characters").fetch()我在JavaScript输出中得到以下错误:

以及IHP输出中的以下错误:
Query (2.119753ms): "SELECT relrowsecurity FROM pg_class WHERE oid = ?::regclass" ["characters"]
Query (0.111442ms): "SET LOCAL ROLE ?" [Identifier {fromIdentifier = "ihp_authenticated"}]
Query (0.130888ms): "SET LOCAL rls.ihp_user_id = ?" Only {fromOnly = Just 0d7b46b1-bcb4-46a2-bf77-ad27dace8416}
FormatError {fmtMessage = "1 single '?' characters, but 3 parameters", fmtQuery = "SELECT ? FROM ??", fmtParams = ["*","characters",""]}这似乎是另一个错误,而不是IHP文档中DataSync教程中的行级安全错误。你知道是什么导致了这个错误吗?
发布于 2021-11-12 19:42:32
这是IHP v0.16.0中的已知错误。It's already fixed in master
最好使用位于https://ihp.digitallyinduced.com/Guide/realtime-spas.html的介绍文本中提到的版本的国际水文计划DataSync :)
顺便说一句,如果你不想升级,有一个解决方法:你总是需要指定一个order by,比如await query("characters").orderBy('createdAt').fetch()
https://stackoverflow.com/questions/69948205
复制相似问题