2012-08-11 42 views
6

我使用的猫鼬3,最明显的方式连接到数据库猫鼬连接/模型:需要始终运行在开放状态?

conn = mongoose.createConnection(...) 
conn.on("open", ...) 

的问题是,我需要在开放的回调来定义我的所有型号?如果是这样的话,我将不得不创建一个initMongoose.coffee看起来像

# initMongoose.coffee 

mongoose = require "mongoose" 
module.exports = mongoose.createConnection ... 

# modelExample.coffee 

conn = require "./initDatabase" 
conn.on "open", -> 
    ... define model? 
    modeule.exports = model # I think this does not work? 

我想我在那个模块不能在那样的回调定义节点的文档在其他地方见过?


由于我只使用1个连接,我想我可以使用

mongoose.connect ... 

,所以我想是同步的哪个犯规接受任何回调?我可以在connect()之后立即定义我的所有模型和查询吗?它目前有效,但可能是因为它足够快。

+0

感谢您提出问题。我看到各种各样的例子,没有把它放在回调中,我很困惑!另外我想知道如果我必须把它放在回调中,我将如何构造该程序。 – huggie 2014-07-30 08:10:09

回答

16

Mongoose缓存命令,直到它完成连接,所以你可以把它看作是同步的,并定义你的模型,并随时开始使用库;只有当你想要开始实际插入或检索数据时,你需要建立连接。

+0

Erm你的第二部分似乎与第一部分相矛盾。所以,我可以在连接后立即定义模型,但是我可以使用插入操作吗? – 2012-08-11 01:18:00

+0

是的;重点是,虽然连接是异步的,但您不必像这样对待它,因为Mongoose会检测到它没有完成连接并缓冲插入,直到完成为止。 – 2012-08-11 01:29:48

+0

@MichelleTilley来源? – CodyBugstein 2017-11-23 03:17:21

相关问题