2016-08-30 90 views
0

我的文件夹结构如下:猫鼬和路由器文件

bin/ 
    www 
models/ 
    myMongooseModel.js 
public/ 
    ... 
routes/ 
    index.js 
    anotherroute.js 
views/ 
    ... 
app.js 
package.json 

在文件app.js,我有一些设置(app.setapp.use命令)。在routes/目录中,有路由文件,每个文件一个文件。在这些文件中,我处理来自用户的请求。文件bin/www.js设置服务器。

问题是:我如何在这个设置中集成Mongoose,即我应该在哪里初始化它,以及我应该在路由器文件中包含什么?

这是最好的方法吗?

db.js

var db = mongoose.connection; 
db.on('error', console.error.bind(console, 'connection error:')); 
db.once('open', function() { 
    console.log('connected'); 
}); 

index.js

var mongoose = require('mongoose'); 
var MyModel = mongoose.model('myMongooseModel'); 
// do something with MyModel 

如何避免建立数据库连接之前的请求,怎么办?

回答

0

这是增加一些承诺的好机会!据推测,在你的app.js的某个地方,你正在初始化应用程序,给它一个端口,并告诉它开始接受流量。在该步骤之前,您可以使用一个可以等待已建立的连接开始。理想情况下,这个逻辑被模块化为它自己的“createConnection.js”。

它看起来是这样的:

// app.js 
const app = require('express'); 
const mongoose = require('mongoose'); 
const connectPromise = mongoose.connect('myuri'); 
connectPromise.then(() => app.listen(3000)) 

一定要看看http://mongoosejs.com/docs/api.html#index_Mongoose-connect

+0

语法“()=> app.listen(3000)”是什么意思?它在纯JS或NodeJS中工作,还是它是一些特殊的东西? – Green

+0

它是[ES6规范](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions)的一部分。它通常在Node 4.x及更高版本中可用。 – broguinn