在Node中使用mongoose的正确方法

时间:2015-03-11 17:42:34

标签: asynchronous mongoose

所有

我对Node中的MongoDB / Mongoose很新。

我不确定从快速入门中导入数据库连接的正确方法是什么:

它使用它像:

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

var db = mongoose.connection;
db.on('error', console.error.bind(console, 'connection error:'));
db.once('open', function (callback) {
  // yay!
});

这里有一个问题

运行

后,它会将错误和打开事件绑定到该连接
mongoose.connect

为什么这仍然能够捕获打开和错误事件如果连接在 db.on和db.once之前完成了?(我在这里不确定的是:那实际上是mongoose.connect将连接请求发送到mongoDB服务器或只是将一些值设置为mongoose内部或者mongoose的工作方式类似于promise?)

我想用它作为节点模块导出到节点中的其他模块,所以我只是简单地创建一个db.js:

  

db.js

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

var db = mongoose.connection;
db.on('error', console.error.bind(console, 'connection error:'));
db.once('open', function (callback) {
  // yay!
});

module.exports = mongoose;

我在test.js中使用此db连接

  

test.js

var mongoose = require("./db");
var kittySchema = mongoose.Schema({
    name: String
});
var Kitten = mongoose.model('Kitten', kittySchema)
var fluffy = new Kitten({ name: 'fluffy' });
fluffy.save(function(err, cat){});

问题是:

我怎么知道并等到建立连接之后,可以在建立连接之前执行保存,这会导致错误。

有人能告诉我使用mongoose的正确方法吗?

由于

0 个答案:

没有答案