2017-07-17 3 views
0

という名前のコレクションを含むCollectorというデータベースを持つMongoDBのインストールがあります。 mongoシェルで見ると65件の結果が出ます。コレクションは存在しますが、Mongooseクエリが空集合を返します

しかし、下のマングースのコードを使用してMongoDBのを照会するとき、私は空のセットを取得:

var Msg = mongoose.model('Msg', { 
    process: String 
    // omitted fields 
}); 

server.use(express.static('./client')); // Serve the client 

server.use(function(req, res, next) { 
    res.header("Access-Control-Allow-Origin", "*"); 
    res.header("Access-Control-Allow-Headers", 
       "Origin, X-Requested-With, Content-Type, Accept"); 
    next(); 
}); 

// Return to the client a JSON object containing *ALL* msgs 
server.get('/msgs', function(req, res) { 
    Msg.find().exec(function(err, msgs) { 
     log(`err: ${err}`); 
     log(`/msgs => Found ${msgs.length} msgs`); 
     res.json(msgs); 
    }); 
}); 

をすべてがOKと思われるが、それは動作しません:localhost:3000/msgsを訪問すると、空の結果オブジェクトを生成します。では、このコードで何が問題になりますか?

答えて

1

問題がコレクションの名前になっていたことがわかりました。明らかにモデル名がMsgの場合、MongoはデフォルトでMsgsを探していますが、私はMsgという名前でした。ここでの解決方法は、3番目の引数をモデル呼び出しに追加することです。

var Msg = mongoose.model('Msg', { 
    process: String 
    // omitted fields 
}, 'Msg'); // <-- collection name 
関連する問題