1. ホーム
  2. mongodb

Mongoose を使って ObjectId で検索したドキュメントが見つからない

2023-09-27 08:38:57

質問

  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

なぜか、これは はありません。 という結果を返します。しかし CampaignResponse にその特定の campaign._id . これは型とキャスティングの問題であることは間違いないのですが、どうすればいいのかがわかりません。

何か良い方法はありませんか?

どのように解決するのですか?

いくつかのヒントがあります。

  • コマンドラインで mongodb から同じクエリを実行してみて、何か結果が出るかどうか見てみましょう。
  • スキーマで "campaign_id" は ObjectId として定義されていますか?もしそうなら、ObjectId タイプを使用して検索してみてください。

例えば

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