2016-12-01 9 views
0

Expressノードでmongooseを使用して作成したオブジェクトを保存するときに問題があります。Express Mongooseがデータを保存していません

いつも保存されていますが、サーバーにログインして自分で取得しようとしてもオブジェクトを見つけることはできません。

にMongoDBを保存するExpressのルート:

router.post('/share', function(req, res, next){ 
    //console.log('Post Request Made', req); 

    //switch to be inputed as parameters of the request 
    //save share 
    var share = new Shares({ link: req.body.link, description: req.body.description }); 
// var share = new Shares({ req.data.link, req.data.description }); 
    console.log('request body', req.body); 
    console.log('to be added', share); 
    //save to database 
    share.save(function(err, share){ 
     if(err){ 
      console.log(err); 
     } else { 
      console.log('the object was saved' , share); 
     var id = share._id; 
     res.send(id); 
     } 
    }); 
}); 

コンソールログ:

request body { link: 'test', description: 'test' } 
to be added { link: 'test', 
    description: 'test', 
    _id: 5840b0393181d4000f652cba, 
    clicks: 0 } 
the object was saved { __v: 0, 
    link: 'test', 
    description: 'test', 
    _id: 5840b0393181d4000f652cba, 
    clicks: 0 } 
POST /share 200 73.618 ms - 26 
This is the link page with id: 5840b0393181d4000f652cba 
found [] 
GET /fluff/link/5840b0393181d4000f652cba 200 20.387 ms - 266 

構成:

var mongoose = require('mongoose'); 
mongoose.Promise = global.Promise; 
mongoose.connect('mongodb://mongo/shares'); 
require('./models/Shares'); 
+0

あなたはそれが格納されているかどうか確認するためにはMongo DBをチェックしますか? – BlackMamba

+0

私は実際にそれを実際に解決しました。私はデータベースの中で、私がmongooseでデバッグオプションをオンにした後に正しい領域にいたことを確認するために変更しなかったし、適切なクエリメソッドが私の答えをちょっと投稿するだろう。 –

答えて

0

問題を解決しました。私の問題は、私が一般的にmongoシェルとmongodbの悩みであるということでした。

私は実際に正しく保存していましたが、mongoシェルで検索していた方法が間違っていました。引数なしでmongoを実行すると、mongoシェルで起動するたびに、testデータベースで起動することを認識できませんでした。私の本当の問題は、私のShares.findById()だったということでした

`db.collections.count()` 
    `db.collections.find()` 

:それまでにそこにあるすべての文書をチェック

`mongo [database_name]` 

だから、最初の事はあなたがなりたいデータベースを入力することです間違っていて、適切なパラメータを調べなければなりませんでした。

これはバージョンを働くことになりました次のようになります。

Shares.findById(id.toString(), function(err, share){ 
    if(err){ 
      console.log('error', err); 
     } else { 
      console.log('found', share); 
     } 
    }); 
関連する問題