使用$ elementMatch过滤器中的MongoError

时间:2015-09-11 10:44:53

标签: node.js mongodb express mongoose

我在Mongoose后端使用NodeJS进行聊天。

我想过滤用户在MongoDB db中读取的所有消息:

控制器

 var filter = {
             $and:[
                   {
                     conversation:req.conversation.id
                   },
                   {
                     $not: 
                     {
                       readers:
                       {
                         $elemMatch:
                         { 
                          user:req.user.id
                         }
                       }
                     }
                  }
                 ]
               };

Message
    .find(filter)
    .exec(function(err,messages){
        if (err) {
            return res.status(400).send({
                message: errorHandler.getErrorMessage(err)
            });
        } else {
            console.log(messages);
            res.jsonp(true);
        }
    });

调试此代码:

  • messages - > undefined
  • err - > Error {name: 'MongoError'}

滤镜变量:

debugging filter variable

我不理解错误,我想也许我错误地使用了过滤器... 我的代码中有什么不对?

非常感谢!!我在下面分享消息谢谢:

消息shema

var MessageSchema = new Schema({
conversation:{
    type: Schema.ObjectId,
    ref: 'Conversation'
},
created: {
    type: Date,
    default: Date.now
},
user:{
    type: Schema.ObjectId,
    ref: 'User'
},
message:{
    type: String,
    default:''
},
readers:[{
    date: {
        type: Date,
        default: Date.now
    },
    user:{
        type: Schema.ObjectId,
        ref: 'User'
    }
}]
});

0 个答案:

没有答案