gpt4 book ai didi

javascript - 如何根据用户在 node.js 中的输入创建我的 mongodb 查询?

转载 作者:可可西里 更新时间:2023-11-01 09:14:02 27 4
gpt4 key购买 nike

目前,我在我的应用程序中存储了不同的论坛帖子。用户可以添加新消息并创建新帖子。其他用户 - 在显示内容时 - 可以对其进行过滤,这样他们就不会看到他们之前阻止的特定用户上传的内容。

每个用户都表示为 device_iddisplay_name 的组合。

当用户获取内容时,他们会执行一个post 查询并包含一组先前被阻止的用户:

"blockedUsers": (
{
"device_id" = "XXX";
"display_name" = XXX;
},
{
"device_id" = "YYY";
"display_name" = YYY;
}
)

目前可以使用某些已注册的显示名称或匿名添加内容。

目前我只支持过滤具有某些显示名称的用户:

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,我只关心通过他的显示名称阻止他。

但是,当一些匿名用户之前被屏蔽时:

"blockedUsers": (
{
"device_id" = "XXX";
"display_name" = "anonymous"; //represents anonymous user
},
{
"device_id" = "YYY";
"display_name" = "anonymous"; //represents anonymous user
}
)

我需要通过 device_id display_name == anonymous 排除他的帖子。在那种情况下,当有一些 device_id 但包含 display_name != anonymous - 我不想阻止它。

我不知道如何更新我的查询以使其涵盖上面的要求,你能帮我吗?谢谢!

最佳答案

如果我理解的很好:

  • 如果用户有一个被禁止的device_id,然后阻止他
  • 如果用户有一个被禁止的 display_name,然后阻止他

在那种情况下,他是否匿名并不重要。


let excludedUsernames, excludedDevices;

blockedUsers.forEach((e) => {
excludedUsernames.puhs({ e["display_name"] });
excludedDevices.push({ e["device_id"] });
});

query.$and.push({ 'display_name' : { $nin: excludedUsernames } });
query.$and.push({ 'device_id' : { $nin: excludedDevices } });

编辑

query.$or.push({
$and: [
{ 'device_id' : { $nin: excludedDevices }},
{ 'display_name' : "anonymous" }
]
});
query.$or.push({ 'display_name' : { $nin: excludedUsernames } });

关于javascript - 如何根据用户在 node.js 中的输入创建我的 mongodb 查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41071134/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com