将 MongoDB 连接到我的 MEAN 程序

Connect MongoDB to my MEAN program

我想编写一个 MEAN 堆栈程序来读取数据并将数据添加到 mongodb 数据库中。 我的程序现在可以在没有 mongodb 部分的情况下运行(使用数组而不是 db)。 你能帮我把它连接到 mongo 吗?在搜索它时,我绝对迷路了。 谢谢

你应该看看猫鼬:

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

这是来自 thinkster 的 MEAN 堆栈入门教程: https://thinkster.io/angulartutorial/mean-stack-tutorial/

因为听起来您掌握了 AngularJS 的一面,所以您最感兴趣的是下半场。它使用您可能想用也可能不想用的 Mongoose,但它应该是一个很好的例子来说明如何组合在一起。

MongoDB 文档也很有用,因为您在 Javascript 中完成所有操作。

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

这是我的 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

猫鼬配置:

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
}

此设置正在搜索您当前所在的节点环境。生产或开发,开发会在本地主机上建立连接。生产转到 mongolab,我在那里建立了一个数据库。