【问题标题】:MongoDB does not refresh data automatically?MongoDB不会自动刷新数据?
【发布时间】:2017-05-30 08:41:02
【问题描述】:

我使用 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 服务器之前,服务器的响应中没有新数据

【问题讨论】:

  • 你能在这里发布一些代码吗?你好吗adding 数据在这里?你如何在前端显示数据?是通过rest API吗?
  • @SarasArya 我正在通过 Mongo Shell 添加数据,它看起来像这样:db.videos.insert({'idv': '8ifJvMlITNc'})。之后,我通过 ajax 从videos 表中获取所有数据。在我重新启动 NodeJS 服务器之前,服务器没有响应新数据

标签: angularjs node.js mongodb express


【解决方案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;

希望这会有所帮助。

【讨论】:

  • 太棒了!如果您发现它有帮助,请接受正确答案并投票。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-29
  • 1970-01-01
  • 1970-01-01
  • 2018-04-20
  • 2012-03-08
  • 1970-01-01
相关资源
最近更新 更多