MongoDB不会自动刷新数据?

时间:2017-01-15 11:35:23

标签: angularjs node.js mongodb express

我使用 MEAN 堆栈进行开发。在向MongoDB添加一些数据后,只有在重新启动NodeJS服务器后才能在前端获得新数据。有什么方法可以“在线”更新MongoDB数据吗?

这是我的API(Node.js):

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;

我通过Mongo Shell添加数据,它看起来像这样:db.videos.insert({'idv': '8ifJvMlITNc'})。之后,我通过Ajax从videos表中获取所有数据。在重新启动Node.js服务器之前,服务器的响应中没有新数据

1 个答案:

答案 0 :(得分:1)

在Node.js应用中,您只需提取一次数据。收到请求时,您不会获取它。将代码更改为以下内容,您无需重新启动以读取数据:

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;

希望这有帮助。