2017-11-30 24 views
0

私はマングースの奇妙な行動に直面しています。マングースはデータベースのみを照会できません

この単純な愚かなコードを分析しましょう。

var mongoose = require('mongoose'); 
mongoose.connect('mongodb://127.0.0.1/sodatest', { 
    useMongoClient: true 
}); 

var db = mongoose.connection; 

var OriginalSchema = mongoose.Schema({ 
    addedd: Date, 
    endPoint: Object, 
    inserted: Number, 
    total: Number 
}); 


var OtherTestSchema = mongoose.Schema({ 
    what: String, 
    modified_at: Date 
}); 


var EndPointInTheDb = mongoose.model('aaa', OriginalSchema); 

db.on('error', console.error.bind(console, 'connection error:')); 
db.once('open', function() { 
    console.log("we are connected!"); 
}); 


EndPointInTheDb.find({}, (err: String, exit: any) => { 
    console.log("Errore : " + err) 
    console.log(exit) 
}); 

それが失敗し、コレクション "AAA" は15個の要素を持っているので、それが失敗した

we are connected! 
********************* 
Error : null 
[] 
********************* 

返します。

他の(小文字の名前を持つものを除いて)他のものを使ってdb "sodatest"を変更し、別のコレクション名を持つ "aaa"を修正すると、正しい大文字と小文字を使用しても問題ありません結果。

we are connected! 
********************* 
Error : null 
[ { _id: 59f76203592b426a16b8b32f, 
    modified_at: 2017-10-30T17:31:47.622Z, 
    last_position: 5, 
    what: 'CONTATOREGEOKEY', 
    __v: 0 } ] 
********************* 

私は別のものでデシベルをコピーしようとした

(それは複数の要素でも動作します)、少なくとも大文字の文字と名前の

db.copyDatabase("sodatest","Prova14") 

(Prova14)しかし、再び結果はありません。

名前のスペルが間違っているかどうか確認しましたが、実際にはわかりました。

コレクションの実際のスキーマと一致しないスキーマ( "OtherTestSchema")を使用している場合でも、他のすべてのデータベース(異機種スキーマを使用する14人)ソーダテスト。

+0

'mongoose.set( 'debug'、true);'でデバッグモードをオンにすることができます。あなたはそれで何かを見つけるかもしれません。 – MikaS

+0

マングース:aaas.find({}、{fields:{}})これは "デバッグ"の唯一の行です。私は –

+0

MongoBoosterを使ってそれらをインポートしたという事実を実感できますか?しかし、それを使用して私は何の問題もなくコレクションを照会することができます。 "db.aaa.find({})"は正常に動作します。 –

答えて

1

Mongooseはコレクション名の末尾に 's'を自動的に追加します。たとえば、次のように

// This will create a collection called 'aaas' since 'aaa' is passed as the 
// model name 
var EndPointInTheDb = mongoose.model('aaa', OriginalSchema); 

// This is how you declare your collection name with a custom collection 'aaa' 
var CorrectEndPointInTheDbToCollection = mongoose.model('aaa', OriginalSchema, 'aaa'); 

CorrectEndPointInTheDbToCollection.find({}, function(err, docs){ 
    console.log(docs) 
}) 

だから、マングースの初期化子はmongoose.model(「モデル名」、スキーマ、「オプションのコレクション名」)です。適切なコレクションを指していることがわかるようにコレクション名を渡すことを強くお勧めします。

+0

これはうまく動作します! –

関連する問題