[英]how can I parse an array of objects in my node.js and mongodb query?
[英]how can I create my mongodb query based on the input from the user in node.js?
目前在我的應用程序中我存儲不同的論壇帖子 用戶可以添加新消息並創建新帖子。 其他用戶 - 在顯示內容時 - 可以對其進行過濾,以便他們不會看到之前阻止的特定用戶上傳的內容。
每個用戶都表示為device_id
和display_name
的組合。
當用戶獲取內容時,他們會進行post
查詢並包含以前被阻止的用戶數組:
"blockedUsers": (
{
"device_id" = "XXX";
"display_name" = XXX;
},
{
"device_id" = "YYY";
"display_name" = YYY;
}
)
目前,可以使用某些已注冊的display_name或匿名添加內容。
現在我只支持使用display_name過濾用戶:
if(blockedUsers) {
var excludedUsernames = [];
for(var i in blockedUsers) {
excludedUsernames.push(blockedUsers[i]['display_name']);
}
query.$and.push({ 'display_name': { $nin: excludedUsernames } });
}
這很好 - 當用戶注冊並有一些display_name(不同於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
和 display_name
== anonymous
排除他的帖子。 在那種情況下,當有一些device_id但包含display_name
!= anonymous
- 我不想阻止它。
我不知道如何更新我的查詢,以便它涵蓋上面的要求,你能幫助我嗎? 謝謝!
如果我理解得很好:
device_id
,則阻止他 display_name
,則阻止他 在這種情況下,如果他是anonymous
並不重要。
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 } });
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.