构建条件mongoose查询

时间:2014-05-19 07:40:17

标签: javascript node.js mongodb mongoose

我一直试图让这个查询正常工作,而且非常沮丧。

我试图搜索电子邮件或用户名,电子邮件与通过的电子邮件不匹配。我正在通过searchstr并通过电子邮件发送给该函数。

我到第1步然后它给了我未定义的错误。当我评论除var query = user.find()之外的所有内容时,它就会消失。

我还试过user.find({email:searchstr});来确保它不是查询但是有效。

我做错了什么?

var friendlist = { friendslist: []};

var query = user.find();
query.or([{ email: searchstr }, { username: searchstr }]);
//query.where(email);
//query.ne(email);

query.exec( function (err,users) {
    if(err != null) {console.log(err); callback({'res': false});}
    console.log('step1')
    users.forEach( function (err,userss) {
        if(err != null) {console.log(err); callback({'res': false});}
        console.log('step2')
        friendlist.friendslist.push({
                    "profileURLImage" : userss.profile_pic_server,
                    "currentStatus" : userss.profile_status,
                    "userName" : userss.username,
                    "email" : userss.email,
                    "online_status" : userss.online_status
                });
    });
});

1 个答案:

答案 0 :(得分:0)

我没有让查询以我想要的方式工作,但我确实得到了一个解决方法,如果有人能提供更好的答案,那么我会选择它作为答案。

我犯的主要错误是在forEach中,因为我猜不会有错误的变量。

var friendlist = { friendslist: []};

var query = user.find();
query.or([{ email: searchstr }, { username: searchstr }]);
//query.where(email);
//query.ne(email);

query.exec( function (err,users) {
    if(err != null) { console.log('error'); console.log(err); callback({'res':false});}
    users.forEach( function (userss) {
        if(userss.email != email) {
            friendlist.friendslist.push({
                    "profileURLImage" : userss.profile_pic_server,
                    "currentStatus" : userss.profile_status,
                    "userName" : userss.username,
                    "email" : userss.email,
                    "online_status" : userss.online_status
                });
        }
    });
    callback({'friends': friendlist.friendslist, 'res':true});
});