我使用 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服务器之前,服务器的响应中没有新数据
答案 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;
希望这有帮助。