Salesforce SOQL-查询当前用户正在跟踪的用户列表

Salesforce SOQL-查询当前用户正在跟踪的用户列表,salesforce,apex-code,soql,salesforce-chatter,Salesforce,Apex Code,Soql,Salesforce Chatter,在我的应用程序中,我显示当前用户的列表。我这样要求: 尝试1 这正是作为管理员登录时应该做的,但我发现非管理员会出现错误: 实现限制:EntitySubscription仅允许安全性 指定限制时对非管理员用户进行评估,最多 一千 好吧,没什么大不了的,我就这样限制一下: 尝试2 简单,对吗?错误的这就产生了以下结果: 应为右括号,但找到“LIMIT” 好的 然后我试着像这样打破它: 尝试3 我祈祷着 Invalid bind expression type of LIST<Id> f

在我的应用程序中,我显示当前用户的列表。我这样要求:

尝试1 这正是作为管理员登录时应该做的,但我发现非管理员会出现错误:

实现限制:EntitySubscription仅允许安全性 指定限制时对非管理员用户进行评估,最多 一千

好吧,没什么大不了的,我就这样限制一下:

尝试2 简单,对吗?错误的这就产生了以下结果:

应为右括号,但找到“LIMIT”

好的

然后我试着像这样打破它:

尝试3 我祈祷着

Invalid bind expression type of LIST<Id> for column of type Id
嗯,我见过这样的例子,比如在电视上,所以我现在有点不知所措


我们到了。我需要选择一个特定用户在Chatter上跟踪的用户名和图片列表。如果有完全不同的方法,我愿意接受。

尝试删除绑定周围的括号,即更改:

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);
}

希望有帮助

老兄,我一听到你的回答就知道它会起作用——它确实起作用了。我会尽快接受这个,我还需要再等几分钟。谢谢这看起来应该是答案。如果是,请将其标记为答案。
Invalid bind expression type of LIST<Id> for column of type Id
WHERE Id IN (:ids) 
WHERE Id IN :ids
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);
}