Node.js 我正在尝试从Express应用程序连接到MongoDB。我想这是在我的连接字符串上抛出一个语法错误

Node.js 我正在尝试从Express应用程序连接到MongoDB。我想这是在我的连接字符串上抛出一个语法错误,node.js,mongodb,express,Node.js,Mongodb,Express,您好,我目前正在使用Express4和MongoDB与mongoose构建和应用程序。当我尝试运行我的应用程序时,我收到了这个错误 /config/database.js:3 }; ^ SyntaxError: Unexpected token } Database.js是我存储数据库连接字符串的地方 下面是database.js中包含的代码 module.exports = { mongodb://username:password@ds033

您好,我目前正在使用Express4和MongoDB与mongoose构建和应用程序。当我尝试运行我的应用程序时,我收到了这个错误

    /config/database.js:3
    };
    ^
    SyntaxError: Unexpected token }
Database.js是我存储数据库连接字符串的地方

下面是database.js中包含的代码

    module.exports = {
    mongodb://username:password@ds033669.mongolab.com:33669/dclubdb
    };
这也是我的app.js文件,它使用database.js数据库代码在第21行:

    var express = require('express');
    var path = require('path');
    var favicon = require('serve-favicon');
    var logger = require('morgan');
    var cookieParser = require('cookie-parser');
    var bodyParser = require('body-parser');

    var mongoose = require('mongoose');
    var flash    = require('connect-flash');
    var passport = require('passport');
    var session      = require('express-session');

    var routes = require('./routes/index');
    var users = require('./routes/users');
    var admins = require('./routes/admin');



    var app = express();

    var configDB = require('./config/database.js');


    // view engine setup
    app.set('views', path.join(__dirname, 'views'));
    app.set('view engine', 'jade');

    // uncomment after placing your favicon in /public
    //app.use(favicon(__dirname + '/public/favicon.ico'));
    app.use(logger('dev'));
    app.use(bodyParser.json());
    app.use(bodyParser.urlencoded({ extended: false }));
    app.use(cookieParser());
    app.use(express.static(path.join(__dirname, 'public')));

    //routes
    app.use('/', routes);
    app.use('/users', users);
    app.use('/admin', users);

    //required for passport
    app.use(session({ secret: 'mysecret' })); // session secret
    app.use(passport.initialize());
    app.use(passport.session()); // persistent login sessions
    app.use(flash());


    // catch 404 and forward to error handler
    app.use(function(req, res, next) {
    var err = new Error('Not Found');
    err.status = 404;
    next(err);
    });

    // error handlers

    // development error handler
    // will print stacktrace
    if (app.get('env') === 'development') {
      app.use(function(err, req, res, next) {
        res.status(err.status || 500);
        res.render('error', {
          message: err.message,
          error: err
        });
      });
    }

    // production error handler
    // no stacktraces leaked to user
    app.use(function(err, req, res, next) {
      res.status(err.status || 500);
      res.render('error', {
        message: err.message,
        error: {}
      });
    });


    //require('./routes/admin.js')(app, passport);


    module.exports = app;

很抱歉打扰您,谢谢您提前抽出时间。如果有任何更多的信息我可以包括,请让我知道

据我所知,您的代码有两个问题:

你似乎连mongo都没有。为了使用mongoose连接到mongo,您必须使用

mongoose.connect('mongodb://...');
此外,database.js不是有效的javascript。问题不在于连接字符串本身,而在于您没有将其赋值给变量

正确的方法是将连接字符串指定给如下属性:

module.exports = {
    connString: 'mongodb://username:password@ds033669.mongolab.com:33669/dclubdb'
};
然后你就可以和

mongoose.connect(configDB.connString);
解释(根据建议)。 通常,您可以在本地运行MongoDB,也可以通过像MongoLab()这样的提供商运行MongoDB(这是免费的,非常适合快速开发)

然后,为了与您的MongoDB实例交互,您通常使用Mongoose(),它是一个对象数据建模工具,具有许多有用的功能,可以对您的MongoDB实例执行基本的CRUD操作和许多其他操作

代码示例使用Mongoose ODM连接到MongoLab实例。连接字符串可从MongoLab接口获得

选项对象记录在此处:


此外,尽管示例使用了硬编码的连接字符串,但您可能希望实现一个credentials.js文件并将其添加到.gitignore文件中,这样您的用户名和密码就不会位于代码存储库中。

将mongodb连接的值放在引号中您是正确的。看来我使用的指南是相当虚假的,所以我要回去使用一些我需要的不同技术的api。非常感谢你的帮助。很高兴我能帮忙!祝你的应用程序好运虽然这个答案可能是正确和有用的,但是如果你在答案中加入一些解释来解释它是如何帮助解决问题的,那就更好了。如果有一个变化(可能是无关的)导致它停止工作,并且用户需要了解它曾经是如何工作的,那么这在将来变得特别有用。
//setup database connection
var options = {
    server: {
        socketOptions: { keepAlive: 1 }
    }
};
mongoose.connect('mongodb://username:password@server.mongolab.com:port/app', options);