[英]SOQL - Querying for a list of users the current user is following
在我的应用程序中,我显示当前用户的列表。 我这样要求:
List<User> Following = [SELECT Id, Name, SmallPhotoUrl
FROM User
WHERE Id IN (
SELECT ParentId
FROM EntitySubscription
WHERE SubscriberId = :UserInfo.getUserId())
AND Id != :UserInfo.getUserId()
LIMIT 96];
这完全符合以管理员身份登录时的预期功能,但我发现非管理员会收到错误消息:
实施限制:仅在指定LIMIT且最大为1000时,EntitySubscription才允许对非管理员用户进行安全评估
好的,没什么大不了的,我会像这样在上面打个限制:
List<User> Following = [SELECT Id, Name, SmallPhotoUrl
FROM User
WHERE Id IN (
SELECT ParentId
FROM EntitySubscription
WHERE SubscriberId = :UserInfo.getUserId()
LIMIT 1000)
AND Id != :UserInfo.getUserId()
LIMIT 96];
容易,对吗? 错误。 这给出了以下内容:
期望右括号,找到“ LIMIT”
好...
然后,我尝试像这样将其分解:
List<EntitySubscription> sub = [SELECT ParentId
FROM EntitySubscription
WHERE SubscriberId = :UserInfo.getUserId()
LIMIT 1000];
List<Id> ids = new List<Id>();
for(EntitySubscription s : sub){
ids.add(s.ParentId);
}
List<User> Following = [SELECT Id, Name, SmallPhotoUrl
FROM User
WHERE Id IN (:ids)
AND Id != :UserInfo.getUserId()
LIMIT 96];
我交叉了手指,然后...
Invalid bind expression type of LIST<Id> for column of type Id
嗯,我看过一些可能的例子,例如在developerforce板上 ,所以现在我有点茫然。
我们在这里。 我需要选择特定用户在Chatter上关注的用户名和图片的列表。 如果有完全不同的解决方法,我会接受的。
尝试删除绑定周围的括号,即更改:
WHERE Id IN (:ids)
至:
WHERE Id IN :ids
通过确保您的ID列表不包含当前用户的ID,还可以简化查询:
List<EntitySubscription> sub = [SELECT ParentId
FROM EntitySubscription
WHERE SubscriberId = :UserInfo.getUserId() AND ParentId != :UserInfo.getUserId()
LIMIT 1000];
Set<Id> ids = new Set<Id>();
for(EntitySubscription s : sub){
ids.add(s.ParentId);
}
希望有帮助!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.