目前在我的应用程序中我存储了不同的论坛帖子。用户可以添加新消息并创建新帖子。
其他用户在显示内容时可以对其进行过滤,这样他们就不会看到他们之前阻止的特定用户上传的内容。
每个用户都表示为以下组合device_id
and display_name
.
当用户获取内容时,他们会执行以下操作post
查询并包含之前被阻止的用户的数组:
"blockedUsers": (
{
"device_id" = "XXX";
"display_name" = XXX;
},
{
"device_id" = "YYY";
"display_name" = YYY;
}
)
目前可以使用某些已注册的显示名称或匿名添加内容。
现在我只支持过滤具有某些display_name的用户:
if(blockedUsers) {
var excludedUsernames = [];
for(var i in blockedUsers) {
excludedUsernames.push(blockedUsers[i]['display_name']);
}
query.$and.push({ 'display_name': { $nin: excludedUsernames } });
}
这工作正常 - 当用户注册并有一些显示名称(不同于anonymous
) - 我不关心他的 device_id,我关心的只是通过他的 display_name 阻止他。
但是,当一些匿名用户之前被阻止时:
"blockedUsers": (
{
"device_id" = "XXX";
"display_name" = "anonymous"; //represents anonymous user
},
{
"device_id" = "YYY";
"display_name" = "anonymous"; //represents anonymous user
}
)
我需要通过排除他的帖子device_id
and the display_name
== anonymous
。在这种情况下,当有一些 device_id 但包含display_name
!= anonymous
- 我不想阻止它。
我不知道如何更新我的查询以使其满足上面的要求,您能帮我吗?谢谢!