복붙노트

[MONGODB] ObjectId가가 몽구스를 사용하여 검색하는 문서를 찾을 수 없습니다

MONGODB

ObjectId가가 몽구스를 사용하여 검색하는 문서를 찾을 수 없습니다

  Campaign.find {client_id:req.param('client_id')}, (error, campaigns) ->
    if error
      response =
        error: error.message
    else
      for campaign in campaigns
        query =
          campaign_id: campaign._id
        console.log query
        CampaignResponse.find query, (err, campaignResponsesCount) ->
          console.log campaignResponsesCount

      response = campaigns

    res.json response

어떤 이유로,이 결과를 반환합니다. 그러나, 특정의 campaign._id와 CampaignResponse의 항목이있다. 나는 확신이 유형과 캐스팅에 문제가있다,하지만 난이 무엇을 알아낼 수 없습니다.

어떤 도움?

해결법

  1. ==============================

    1.몇 가지 팁 :

    몇 가지 팁 :

    예를 들면 :

    var ObjectId = require('mongoose').Types.ObjectId; 
    var query = { campaign_id: new ObjectId(campaign._id) };
    
  2. ==============================

    2.그냥 난 내 프로젝트에 사용, 이전의 (올바른) 대답을 개선하기 위해 :

    그냥 난 내 프로젝트에 사용, 이전의 (올바른) 대답을 개선하기 위해 :

    String.prototype.toObjectId = function() {
      var ObjectId = (require('mongoose').Types.ObjectId);
      return new ObjectId(this.toString());
    };
    
    // Every String can be casted in ObjectId now
    console.log('545f489dea12346454ae793b'.toObjectId());
    
  3. ==============================

    3.대신 ObjectId가를 사용하는 간단하게 사용하여 매개 변수를 비교하여 찾을 수 있습니다

    대신 ObjectId가를 사용하는 간단하게 사용하여 매개 변수를 비교하여 찾을 수 있습니다

    Campaign.findById {req.param ( 'CLIENT_ID'), 함수 (ERR, 문서)} ....

    OBJECTID findById 메소드를 사용하여 문서를 찾을 때 모든 가장 효율적인 방법입니다 ...

  4. from https://stackoverflow.com/questions/7878557/cant-find-documents-searching-by-objectid-using-mongoose by cc-by-sa and MIT license