2017-06-04 24 views
0

私は現在、 'foo'というキーの中に特定の値の 'bar'を持つすべてのドキュメントを探しています。 mongodbとnodejsの使用。Find()メソッドNode12を持つMongoDB

これを実行しようとすると: "TypeError:プロパティ 'find'が未定義です"エラーが返されます。私はfindOne()を使用してみた場合

それは単にキー「foo」という値を持つ文書「bar」を持つ最初の文書を返します、しかし3

module.exports = function(app, db) { 

app.get('/foo', (req, res)=>{ 

db.collection('barCollection').find({foo: {$all: ['bar']}} 
,(err, item)=>{ 
if (err) { 
      res.send({'error':'An error has occurred'}); 
     } else { 
      res.send(item); 
     } 
    }); 
}); 
}; 

おかげである

答えて

1

ポールが正解です。あなたのコードに何らかの問題があり、それがnullを返す理由です。

ここでこのスニペットを試してください。私はデモ用に2つのファイルを使用しています。

model.js

const mongoose = require('mongoose'); 

mongoose.connect('mongo_url'); 
var barSchema = new mongoose.Schema({ 
    // your schema 
}); 

module.exports = mongoose.model('Bar', barSchema); 

main.js

var BarCollection = require('./models'); // assuming both files are in same directory. 

BarCollection.find({foo: {$all: ['bar']}} 
,(err, item)=>{ 
if (err) { 
      res.send({'error':'An error has occurred'}); 
     } else { 
      res.send(item); 
     } 
    }); 
}); 
}; 

基本的に私はここにしようとしていますものです:別ファイルで

  1. 別々のMongoDBモデルコード
  2. CRUD操作用のAPIファイルでmongoコレクションをインポートする
+1

マングースをおすすめします。それはモンゴーへの最善の方法です、imo – Paul

+1

それは働いている! – rudster

+0

うれしいよ:) –

0

db.collection('barCollection')は何らかの理由でnullを返しています。理由を理解する必要があります。ここに設定ロジックがないので、おそらくコードのどこかにあるでしょう。

私は(つまり、あなたが実際にデータベースに接続し、その関数を渡しているDBインスタンスです)MongoDBのが正しく接続されていたかどうかを見てみたい、あなたがそれを設定されたポート上のMongoDBランニングや利用可能である、など

+0

私はfindOne()の作業が正しく接続されているとは限りません。ありがとうございます – rudster

+0

それはすべきですが、そのコードでは別のものがあります。このエラーは、DB.collection( 'barCollection')の戻り値が未定義であることを示しています。つまりnull.find()を呼び出そうとしているのですが、これは当然不可能です – Paul

+0

今私は別のエラーが出ています "TypeError:循環型構造をJSONに変換する"接続しているが表示できないため、 – rudster

関連する問題