在我的应用程序中,我显示了当前用户的列表。我这样要求:
尝试 1
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];
这正是以管理员身份登录时应该做的事情,但我发现非管理员会收到错误:
实现限制:EntitySubscription 只允许在指定 LIMIT 且最多 1000 时对非管理员用户进行安全评估
好的,没什么大不了的,我会像这样在上面打一个 LIMIT :
尝试 2
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'
好的...
然后我试着像这样打破它:
尝试 3
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 board上,所以我现在有点不知所措。
所以我们在这里。我需要选择特定用户在 Chatter 上关注的用户名和图片列表。如果有完全不同的方式来解决它,我愿意接受。