Mongoose、Cygwin 和 MongoDB - 不保存

Posted

技术标签:

【中文标题】Mongoose、Cygwin 和 MongoDB - 不保存【英文标题】:Mongoose, Cygwin and MongoDB - not saving 【发布时间】:2011-07-01 13:00:33 【问题描述】:

我对 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 二进制文件。 我在 Windows 中直接运行 MongoDB,但我有同样的问题,我可以通过 MongoVUE 连接到数据库,所以一切似乎都正常,但是当我尝试使用 mongoose 保存实例时,回调从来不叫!你解决了这个问题吗? 好的,我解决了,我不得不写“127.0.0.1”作为mongodb服务器,它不喜欢“localhost”作为服务器,这似乎是cygwin环境的一种奇怪行为.. 我也面临着类似的问题。所以尝试从 windows 命令提示符而不是 cygwin 运行 mongod。但这并没有解决我的问题。有什么线索吗?还有什么问题? 【参考方案1】:

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

127.0.0.1  localhost

你的主机文件应该在C:\Windows\System32\drivers\etc附近的某个地方

【讨论】:

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

以上是关于Mongoose、Cygwin 和 MongoDB - 不保存的主要内容,如果未能解决你的问题,请参考以下文章

关于NodeJs为啥要用mongoose操作mongodb

关于NodeJs为啥要用mongoose操作mongodb

Node 使用mongodb的mongoose是否很坑

MongoDB、Mongoose 和复合 _id

如何使用用户名和密码连接 mongodb(mongoose)?

初学mongodb和mongoose