如何让 node.js 使用 mongoose 连接到 mongolab

Posted

技术标签:

【中文标题】如何让 node.js 使用 mongoose 连接到 mongolab【英文标题】:How to get node.js to connect to mongolab using mongoose 【发布时间】:2015-08-31 17:16:36 【问题描述】:

我一直在尝试使用 mongoose(node.js 和 mongodb 的模块)。并试图与 mongolab 建立连接并运行。我在 app.js 文件的顶部尝试了以下操作,但似乎无法输入 db.on 函数。

global.mongoose = require('mongoose');
var uri = 'mongodb://username:password#####@ds.mongolab.com:#####/db';
global.db = mongoose.createConnection(uri);
global.Schema = mongoose.Schema;
db.on('error', console.error.bind(console, 'connection error:'));
db.once('open', function (callback) 
  console.log("db up")
  var userSchema = new Schema(
      name  :   type: String, default: '' 
    , password   :   type: String, default: '' 
  );
  var userModel = mongoose.model('User', userSchema);
  var test = new userModel(name: "test", password: "test")

  console.log("me: " + test)

  test.save(function (err, test) 
    console.log("saved?")
    if (err) 
      console.log("error");
      return console.error(err);
    
    console.log("saved!")
  );

  console.log("after save");

);

我的终端输出是

/usr/local/bin/node bin/www
me:  _id: 557f93a8a8b4b8628095bd01, password: 'test', name: 'test' 
after save

调试器似乎也跳过了该功能(不过我在 WebStorm 上的调试技能有限)

这也没有以更直接的方式起作用:

mongoose = require('mongoose');
var uri = 'mongodb://username:password.mongolab.com:#####/db';
db = mongoose.createConnection(uri);
Schema = mongoose.Schema;

  var userSchema = new Schema(
      name  :   type: String, default: '' 
    , password   :   type: String, default: '' 
  );
  var userModel = mongoose.model('User', userSchema);
  var test = new userModel(name: "test", password: "test")

  console.log("me: " + test)

  test.save(function (err, test) 
    console.log("saved?")
    if (err) 
      console.log("error");
      return console.error(err);
    
    console.log("saved!")
  );
  console.log("after save");

这给了我相同的终端输出。

我想知道我需要采取哪些步骤才能真正开始与我的 mongolab 数据库对话。我也没有看到任何在 mongolab 上创建的集合。

【问题讨论】:

【参考方案1】:

尝试使用

db = mongoose.connect(uri);

而不是

db = mongoose.createConnection(uri);

【讨论】:

以上是关于如何让 node.js 使用 mongoose 连接到 mongolab的主要内容,如果未能解决你的问题,请参考以下文章

Node.js Mongoose 是不是允许您通过用户/密码连接到数据库?

Node.js Mongoose 是不是允许您通过用户/密码连接到数据库?

如何在 Mongoose 上将 MongoDB 连接到 Heroku?

node.js + express.js:使用 mongodb/mongoose 处理会话

单个node.js项目中的Mongoose和多个数据库

单个node.js项目中的Mongoose和多个数据库