2016-07-11 1 views
0

私は現在、単純なMEANプロジェクトを進めています。私はmongo dbから1つのアイテムを引き出してWebページに表示しています。オブジェクトの情報を見るためにサイト http://localhost:3000/api/events/5782b1dbb530152d0940a227に行くたびに、nullが表示されます。私は、私が言ったように、このオブジェクトに関する情報を見ると仮定します。MongoDBのノードとエクスプレスルックアップIDの問題

コントローラ:

var mongoose = require('mongoose'); 
var Eve = mongoose.model('Info'); 

var sendJSONresponse = function(res, status, content) { 
res.status(status); 
res.json(content); 
}; 

module.exports.eventsReadOne = function(req, res) { 
Eve 
    .findById(req.params.eventid) 
    .exec(function(err, info){ 
    sendJSONresponse(res, 200, info) 
    }); 
    //sendJSONresponse(res, 200, {"status" : "success"}); 
}; 

モデル:

var mongoose = require('mongoose') 

var eventSchema = new mongoose.Schema({ 
    activity: String, 
    address: String, 
}); 

mongoose.model('Info', eventSchema); 

路線:

var express = require('express'); 
var router = express.Router(); 
var ctrlEvents = require('../controllers/events'); 

//events 
router.get('/events/:eventid', ctrlEvents.eventsReadOne); 

module.exports = router; 

今、気づいたことがあり、一つのことは、その私であるここに私のコードは次のようになります私のモンゴル収集イベントに電話してください。しかし、私はイベントがJSのキーワードであることを忘れていました。私は、それを私のモデルの最後の行に表示されるInfoに "変更"しようとしました。私が言ったように、最後の番号がobj _idであるサイトhttp://localhost:3000/api/events/5782b1dbb530152d0940a227に行くと、その上のすべてのデータが表示されるはずです。代わりに、私が見るものはすべてnullです。どんな助けも素晴らしいだろう、ありがとう!

var mongoose = require('mongoose'); 
var dbURI = 'mongodb://localhost/mission'; 
mongoose.connect(dbURI) 

require('./events'); 
+0

'console.log(req.params)'は気をつけていますか? – kawadhiya21

+0

はい、何も起こりそうにない、私はsendJSON応答の上に置いた、任意のアイデア? –

+0

'event'はJSのキーワードではありません。エラー処理を追加してみてください。また、コードのどこかで 'mongoose.connect()'を呼び出すと仮定します。 – robertklep

答えて

0

マングースは、それが使用すべきMongoDBのコレクションを決定するためにモデル名を使用します。

私の他のモデルファイル、db.jsは、接続しています。あなたがそれをしたい場合は

// This is where the model is created from the schema, and at this point 
// the collection name is decided. 
mongoose.model('Info', eventSchema); 

:デフォルトのスキームは小文字、モデル名を取得し、それを複数化し、infosだろうあなたのケースで(モデル名としてInfoを使用して)コレクション名、などの結果を使用することです(スキーマがされていないあなたはコメントで述べているエラーを修正するには

var eventSchema = new mongoose.Schema({ 
    activity : String, 
    address : String, 
}, { collection : 'events' }); 

:別のコレクションを使用するには、明示的にスキーマのcollectionオプションを設定することで使用するものをコレクションマングースを伝える必要がありますモデル "ミッション"のために登録)、あなたあなたがmongoose.model()のすべての出現箇所を変更することを確認する必要があります。

// To create the model: 
mongoose.model('Mission', eventSchema); 

// Later on, to access the created model from another part of your code: 
var Eve = mongoose.model('Mission'); 

(「ミッション」は、あなたのデータベースの名前であることのようですが。あなたのコレクションはイベントと呼ばれているのでモデル名はEventと思われます。

+0

すごい!あなたはそれが男だ!できます!この人がMEAN Stackで始めるのを手伝ってくれてありがとう! –

関連する問題