我使用mongoose创建了一个简单的演示,它在localhost上工作得很好:
mongoose.connect('mongodb://localhost/mindmap', function(err, next) {
if(err) return next(err);
console.log('database connected');
});它通过一个简单的查找来获取数据:
/* GET mindmaps. */
router.get('/', function(req, res, next) {
Mindmap.find(function (err, mindmaps) {
if (err) return next(err);
res.json(mindmaps);
});
});并通过套接字连接添加数据
// handle adding new mindmaps
socket.on('mindmap.add', function (data) {
Mindmap.create(data, function (err, mindmap) {
if (err) throw err;
mindmaps.push(mindmap);
io.sockets.emit('mindmap.add', mindmap);
});
});现在所有这些都在本地运行得很好。
今天我在我的CentOS 6.5VPS上安装了npm,bower,应用本身和MongoDB。我启动了mongo服务,并在服务器上更改了app.js以连接到正确的ip/端口:
mongoose.connect('mongodb://127.0.0.1:27017/mindmap', function(err, next) {当我使用node bin/www启动应用程序时,connect没有抛出任何错误,只是简单地声明数据库已连接。/mindmap提供一个空数组(这在这一点上是合乎逻辑的)。通过套接字连接添加新的思维导图甚至会发出一个适当的mindmap对象,html将显示它。没有错误,但也没有保存任何内容,在刷新时,它再次开始为空。另外,在mongo shell中,集合中没有任何东西..如果我手动添加一些东西,我在/mindmap中看不到它。
完整的客户端代码在http://mindmap.solidwebcode.com:3000/mindmap上
以下是模型以供参考:
var mongoose = require('mongoose');
var SubjectSchema = new mongoose.Schema({
title: String,
x: Number,
y: Number,
w: Number,
h: Number,
parent: mongoose.Schema.Types.ObjectId
});
var MindmapSchema = new mongoose.Schema({
name: String,
theme: String,
subjects: [SubjectSchema],
created_at: { type: Date, default: Date.now },
updated_at: { type: Date, default: Date.now }
});
module.exports = mongoose.model('Mindmap', MindmapSchema);我使用以下命令安装mongodb:
sudo yum --enablerepo=epel install mongodb mongodb-server
sudo service mongod start尽管有一些警告,但启动mongo也能按预期工作:
Server has startup warnings:
2015-05-04T13:42:08.955+0200 [initandlisten]
2015-05-04T13:42:08.955+0200 [initandlisten] ** WARNING: You are running in OpenVZ which can cause issues on versions of RHEL older than RHEL6.
2015-05-04T13:42:08.955+0200 [initandlisten] 我以前从未在VPS上安装过mongo并使用过它。我是不是漏掉了什么琐碎的东西?
发布于 2015-05-05 22:39:44
问题不是MongoDB不工作,而是套接字连接启动到localhost:3000,这与外部服务器不同。因此,虽然远程服务器上没有发生任何事情,但本地服务器正在接受套接字连接,并在自己的数据库中添加新记录。
解决方案很简单:将套接字连接更改为远程地址。
https://stackoverflow.com/questions/30030424
复制相似问题