我想检索用户列表但不包括当前用户ID。
现在我没有排除它:
User.find()
.or([
{email: new RegExp(req.param('searchTerm'), 'i')},
{displayName: new RegExp(req.param('searchTerm'), 'i')}
],
'displayName email profileImageURL')
.limit(20)
.exec(function(err, users)
如何更改查询以使用AND我需要排除当前的用户ID?
由于
答案 0 :(得分:2)
为您的查询链添加初始where
调用:
User.find()
.where('_id').ne(userID)
.or([
{email: new RegExp(req.param('searchTerm'), 'i')},
{displayName: new RegExp(req.param('searchTerm'), 'i')}
])
.select('displayName email profileImageURL')
.limit(20)
.exec(function(err, users)
or
来电使其读起来就像两个人在一起被“删除”,但他们实际上已经被“和”了。
答案 1 :(得分:0)
你想要的只是 $ne
对_id
的另一个条件。这可以通过多种方式表示:
或者:
User.find().where({ "_id": { "$ne": currentId })
.or([
{email: new RegExp(req.param('searchTerm'), 'i')},
{displayName: new RegExp(req.param('searchTerm'), 'i')}
]).
.select('displayName email profileImageURL')
.limit(20)
.exec(function(err, users) {
});
或者:
User.find({ "_id": { "$ne": currentId })
.or([
{email: new RegExp(req.param('searchTerm'), 'i')},
{displayName: new RegExp(req.param('searchTerm'), 'i')}
])
.select('displayName email profileImageURL')
.limit(20)
.exec(function(err, users)
甚至只是作为原生数据结构。毕竟是JavaScript:
User.find(
{
"_id": { "$ne": currentId },
"$or": [
{ "email": new RegExp(req.param('searchTerm'), 'i')},
{ "displayName": new RegExp(req.param('searchTerm'), 'i')}
],
},
'displayName email profileImageURL')
.limit(20)
.exec(function(err, users) {
});
所以你不需要"帮助"方法,这也导致更长和更不灵活的代码。数据结构易于在JavaScript等动态语言中操作。