2016-04-30 2 views
1

В моей коллекции у меня есть такие документы, как:мангуст простого запроса найти не в состоянии принести результат

{ 
    "_id": ObjectID("5725290dacb36ae775e25dbe"), 
    "prop": { 
     "giver_name": "Random Tester", 
     "giver_id": ObjectID("56b5e87e1827640215c5c055"), 
     "giver_url": "random-tester" 
    }, 
    "owner": ObjectID("568fbeef9823be8e105afa46"), 
    "title": "testing", 
    "content": "hgj jhj hgjh gjhgjhgj hgjhg jhg", 
    "type": "recommendation", 
    "modified": ISODate("2016-04-30T21:52:13.517Z"), 
    "created": ISODate("2016-04-30T21:52:13.518Z"), 
    "privacy": { 
     "all": true 
    }, 
    "shares": [], 
    "interests": [], 
    "comments": 0, 
    "acknowledgements": [], 
    "__v": 0 
} 

Я пытаюсь принести вышеуказанный документ с мангустами запросом

Post.findAsync({type:'recommendation','prop.giver_id':"56b5e87e1827640215c5c055" }).then(function(count, err){ 
    console.log('Recommendation count: ',count," : ",userId," : ",err); 
    return res.status(200).json(count); 
    }); 

Этим запрос дает мне пустой набор результатов, однако, если я удалю часть prop.giver_id, я получу все результаты. Я знаю, что это поле ObjectId, но, насколько я видел, строка в запросе поиска работает очень хорошо. Так что я делаю неправильно?

+0

@JohnnyHK спасибо, я забыл определить, что поле ObjectId в модели. Пожалуйста, разместите его как ответ, чтобы я мог его принять :) – SuSub

ответ

1

Mongoose будет отображать поля в вашем запросе на основе определения вашей схемы, поэтому, когда такой запрос не работает, это часто происходит потому, что определение схемы не соответствует вашему фактическому документу.

В этом случае необходимо убедиться в giver_id определен в схеме как:

giver_id: mongoose.Schema.ObjectId