2017-01-15 13 views
-1

開発のためにMEANスタックを使用します。また、MongoDBにデータを追加した後、NodeJSサーバーを再起動した後でのみ、新しいデータをフロントエンドで利用できます。 MongoDBのデータをオンラインで更新する方法はありますか?MongoDBは自動的にデータを更新しませんか?

これは私のAPI(Node.jsの)です:db.videos.insert({'idv': '8ifJvMlITNc'})

var express = require('express'); 
var mongoose = require('mongoose'); 
var router = express.Router(); 

mongoose.connect('mongodb://localhost/vt'); 

var Video = mongoose.Schema({ 
    idv: String, 
    thumbnail: Number, 
    aud : String, 
    title : String, 
    description : String 
}); 
var db; 
var video = mongoose.model('video',Video); 
video.find({}, function (err, data) { 
    db = data; 
}); 

router.get('/api/videos', function (req, res) { 
    res.send(db); 
}); 

module.exports = router; 

私はモンゴシェルを介してデータを追加してい、それはこのようになります。その後、私はvideosテーブルからすべてのデータをAjax経由で取得します。 Node.jsサーバーを再起動するまで、サーバーからの応答に新しいデータはありません。

+1

ここにコードを投稿できますか?ここにどのようにデータを追加していますか?フロントエンドにどのようにデータを表示していますか?それは休憩API経由ですか? –

+0

@SarasArya Mongo Shellでデータを追加していますが、これは次のようになります: 'db.videos.insert({'idv': '8ifJvMlITNc'})'。その後、私は 'videos'テーブルからすべてのデータをajax経由で取得します。 NodeJSサーバーを再起動するまでサーバーからの応答に新しいデータはありません –

答えて

1

Node.jsアプリケーションでは、データを1回だけフェッチしています。リクエストを受け取ったときにそれを取得していません。コードを次のように変更して、データを読み取るために再起動する必要はありません。

var express = require('express'); 
var mongoose = require('mongoose'); 
var router = express.Router(); 

mongoose.connect('mongodb://localhost/vt'); 

var Video = mongoose.Schema({ 
    idv: String, 
    thumbnail: Number, 
    aud : String, 
    title : String, 
    description : String 
}); 

var video = mongoose.model('video',Video); 

router.get('/api/videos', function (req, res) { 
    video.findOne({}, function (err, data) { 
     if (err || !data) { 
      res.status(500).send(); 
     } 

     res.status(200).send(data); 
    }); 
}); 

module.exports = router; 

希望します。

+0

はい、ありがとうございます。それは今素晴らしいです!どうもありがとう! –

+0

素晴らしい!あなたがそれが役に立つと分かった場合は、正解&upvoteとして受け入れてください。ありがとう! –

関連する問題