将MongoDB连接到我的MEAN程序

时间:2015-01-12 14:23:40

标签: angularjs node.js mongodb web mean-stack

我想编写一个MEAN堆栈程序,读取数据并将其添加到mongodb数据库中。 我的程序现在没有mongodb部分工作(使用数组而不是数据库)。 你能帮我把它连接到mongo吗?在搜索时我绝对迷失了方向。 感谢。

3 个答案:

答案 0 :(得分:3)

您希望在节点服务器端创建连接。这是我当前设置的堆栈。

这是我的server.js文件

// modules =================================================
var express         = require('express'),    
    mongoose        = require('mongoose');


// Node Environment Configuration ===========================================
var env = process.env.NODE_ENV = process.env.NODE_ENV || 'development',
    config = require('./server/config/config')[env];


// Create an Instance of Express ===========================================
var app            = express();


// Modules of app ===========================================
require('./server/config/express.js')(app, config); // Express Configuration
require('./server/config/mongoose.js')(config);     // Database Configuration
require('./server/config/routes.js')(app);          // Routes Configuration
require('./server/config/passport.js')();           // Passsport Configuration


// Databse Connection ==================================================
mongoose.connect(config.db);
var db = mongoose.connection;


// start app ===============================================
app.listen(config.port);    
console.log('listening on port ' + config.port);        // shoutout to the user
exports = module.exports = app;                         // expose app

Mongoose配置:

module.exports = function(config) {
  mongoose.connect(config.db);
  var db = mongoose.connection;
  db.on('error', function callback () {
    console.log("Connection error");
  });
  db.once('open', function callback () {
    console.log("Mongo working!");
  });
}

这是我的数据库配置

var path = require('path');
var rootPath = path.normalize(__dirname + '/../../');

module.exports = {
  development:{
    db: 'mongodb://localhost:27017/mean-demo',
    rootPath: rootPath,
    port: process.env.PORT || 3000
  },
  production:{
    db: 'mongodb://mypath:pathname@ds041160.mongolab.com:47350/pathname',
    rootPath: rootPath,
    port: process.env.PORT || 80

  }


}

这是我的快递模块:

var express         = require('express'),
logger          = require('morgan'),
bodyParser      = require('body-parser'),
methodOverride  = require('method-override'),
cookieParser    = require('cookie-parser'),
session         = require('express-session'),
passport        = require('passport');


module.exports = function(app, config){

app.set('view engine', 'ejs');
app.set('views', 'server/views');
app.use(cookieParser()); //required for auth sessions
app.use(bodyParser()); //must come after cookie parser
app.use(session({secret: 'healing center'})); //required for auth sessions
app.use(passport.initialize());  //initialize passport middleware
app.use(passport.session());   //telling passport to use sessions
app.use('/js', express.static(config.rootPath + '/client/js'));
app.use(methodOverride('X-HTTP-Method-Override')); // simulate delete/put
app.use(express.static(config.rootPath + '/client')); // set the static files location /client/img will be /img for users
}

此设置正在搜索您当前所在的节点环境。生产或开发,开发会在localhost上访问连接。生产去了mongolab,在那里我建立了一个数据库。

答案 1 :(得分:1)

你应该看看mongoose:

http://mongoosejs.com/docs/index.html

答案 2 :(得分:1)

以下是thinkster开始使用MEAN堆栈的精彩教程: https://thinkster.io/angulartutorial/mean-stack-tutorial/

由于听起来你手边有AngularJS,所以你对下半场感兴趣。它使用了你可能想要或不想使用的猫鼬,但它应该是事物如何融合的一个很好的例子。

MongoDB文档也非常有用,因为您在Javascript中执行所有操作。