您好我目前正致力于使用带有mongoose的Express4和MongoDB构建和应用程序。当我尝试运行我的应用程序时,我收到此错误
/config/database.js:3
};
^
SyntaxError: Unexpected token }
Database.js是我存储数据库连接字符串的地方。
以下是database.js中包含的代码
module.exports = {
mongodb://username:password@ds033669.mongolab.com:33669/dclubdb
};
这也是我使用database.js的app.js文件,db代码在第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;
很抱歉打扰你,并提前感谢您的时间。如果我可以提供更多信息,请告诉我。
答案 0 :(得分:0)
据我所知,您的代码存在两个问题:
你似乎甚至没有连接到mongo。要使用mongoose连接到mongo,你必须使用
mongoose.connect('mongodb://...');
此外,您的database.js不是有效的JavaScript。这不是连接字符串本身的问题,而是你没有分配给变量。
正确的方法是将连接字符串分配给如下属性:
module.exports = {
connString: 'mongodb://username:password@ds033669.mongolab.com:33669/dclubdb'
};
然后你可以用
连接mongoose.connect(configDB.connString);
答案 1 :(得分:0)
//setup database connection
var options = {
server: {
socketOptions: { keepAlive: 1 }
}
};
mongoose.connect('mongodb://username:password@server.mongolab.com:port/app', options);
解释(根据建议)。 您通常在本地或通过像MongoLab(https://mongolab.com/)这样的提供程序运行MongoDB(这是免费的,非常适合快速开发)。
然后,要与MongoDB实例进行交互,通常使用Mongoose(http://mongoosejs.com/),它是一个对象数据建模器,具有许多有用的功能,可以为MongoDB实例执行基本的CRUD操作和许多其他操作。
代码示例使用Mongoose ODM连接到MongoLab实例。连接字符串可从MongoLab界面获得。
此处记录了Options对象:http://mongoosejs.com/docs/connections.html
此外,虽然该示例使用硬编码连接字符串,但您可能希望实现credentials.js文件并将其添加到.gitignore文件中,以便您的用户名和密码不会位于代码存储库中。