Mongoose,Cygwin和MongoDB - 无法保存

3

我对Mongo和Node.js完全是新手,目前还处于入门阶段。

我在Windows 7上运行,因此必须使用Cygwin才能使用Node.js。对于Mongo,我将二进制文件复制到cygwin/bin/文件夹中,并启动mongod - 到目前为止这样可以工作。我可以创建数据库、表等。

现在我想在Node.js中使用Mongoose,我通过npm安装了它,似乎也可以工作,但我无法保存记录。

这是我使用的代码:

var mongoose = require('mongoose'),
sys  = require('sys'),
Schema = mongoose.Schema;

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

// schema definition
var User = new Schema({
    name     : String
});

mongoose.model('User', User);

// creating an user
var UserModel = mongoose.model('User'); 
var u = new UserModel();
u.name = 'John';

// inserting
u.save(function(){
    sys.puts('Saved!');
});

我从来没有看到“已保存!”的输出,并且它也没有保存。有什么建议吗?


这里完美运行。唯一的区别是我直接在Windows上运行MongoDB,而不是在Cygwin上运行。从MongoDB官网获取二进制文件。 - Carlosedp
我直接在Windows上运行MongoDB,但是我遇到了同样的问题。我可以通过MongoVUE连接到数据库,所以一切似乎都好,但是当我尝试使用mongoose保存实例时,回调从未被调用!你成功解决了这个问题吗? - BFil
好的,问题解决了。我必须将 MongoDB 服务器地址写成 "127.0.0.1",它不接受 "localhost" 作为服务器地址。看来这是 Cygwin 环境的一个奇怪行为。 - BFil
我也遇到了类似的问题。所以尝试从Windows命令提示符而不是Cygwin运行mongod。但这并没有解决我的问题。有什么线索吗?还可能出了什么问题? - user644745
1个回答

3

我刚遇到了这个问题。尝试将以下行添加到您的hosts文件中:

127.0.0.1  localhost

您的hosts文件应该在C:\Windows\System32\drivers\etc附近。

1
Windows 7默认使用IPv6地址::1作为本地主机地址,因此在hosts文件中指定IPv4地址会将其更改为IPv4,这可能是mongodb使用的协议。请注意,etc目录可能是隐藏的,并且只有在以管理员身份编辑文件时才能编辑hosts文件。 - maxpolk

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接