在我的应用程序中,我正在查询事件。我要选择符合以下要求的活动。
1。 user_id的值不应等于当前用户的ID
2。自定义字段“已取消”应为false
第3。自定义字段“参与者”应包含当前用户的ID
其中cancelled
属性将具有布尔值,participants
是包含某些对象的数组。
participants array:
participants : [{"userID":"52a15bebf172080g3g02abcd","nickname":"Anand"},{"userID":"58t85eryjc2fx3489nx4m90d","nickname":"Midhun"}];
我已经写了以下内容来获取活动
function getUsers(user){
Cloud.Events.query({
per_page: 1000,
where : {
"cancelled" : false,
"user_id":{"$ne":user.id},
//TODO: here I need to get the participants whose userID is equal to user.id
}
}, function(e){
if (e.success) {
alert('Success:\n' + 'Count: ' + e.events.length);
} else {
alert('Error:\n' +
((e.error && e.message) || JSON.stringify(e)));
}
});
}
如何检查参与者对象数组中是否存在user.id?
更新
我尝试了以下
where : {
"cancelled" : false,
"participants.userID" : user.id,
"user_id":{"$ne":user.id},
}
但返回0.它应该返回1.
答案 0 :(得分:1)
经过大量研究,我找到了答案。我更改了where子句如下
where : {
"cancelled" : false,
"participants" :{ "$elemMatch" : { "userID" : user.id }}
"user_id":{"$ne":user.id},
}
完整代码如下
function getUsers(user){
Cloud.Events.query({
per_page: 1000,
where : {
"cancelled" : false,
"participants" :{ "$elemMatch" : { "userID" : user.id }}
"user_id":{"$ne":user.id},
}
}, function(e){
if (e.success) {
alert('Success:\n' + 'Count: ' + e.events.length);
} else {
alert('Error:\n' +
((e.error && e.message) || JSON.stringify(e)));
}
});
}
This link帮助我解决了这个问题。