我無法理解需要做什麼才能連接到MongoDB,因此我可以將一個對象插入到數據庫中。我對使用Express以及MongoDB並不熟悉,但對這兩者還沒有充分的把握。使用Express連接到MongoDB
我使用標準Express設置創建的app.js如下。
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 ex_session = require('express-session');
var dateformat = require('dateformat');
var MongoClient = require('mongodb').MongoClient;
var ObjectID = require('mongodb').ObjectID;
var url = 'mongodb://localhost:27017/contacts'
var index = require('./routes/index');
var app = express();
// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');
// uncomment after placing your favicon in /public
//app.use(favicon(path.join(__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')));
app.use('/', index);
// 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 handler
app.use(function(err, req, res, next) {
// set locals, only providing error in development
res.locals.message = err.message;
res.locals.error = req.app.get('env') === 'development' ? err : {};
// render the error page
res.status(err.status || 500);
res.render('error');
});
module.exports = app;
我index.js如下:什麼我想發生這樣的是,當一個POST請求由/發郵件,連接,以便建立一個插入到MongoDB的製造。
var express = require('express');
var router = express.Router();
var url = 'mongodb://localhost:27017/contacts';
var contacts;
/* GET home page. */
var start = function(req, res, next){
console.log("Starting!");
res.render('mailer',{});
}
router.get('/', start);
router.get('/mailer', start);
/* Post mailer Page insert into database*/
router.post('/mailer', function(req, res, next){
res.render('thanks');
console.log("Welcome to the Thank You Page");
MongoClient.connect(url, function(err, db){
if(err == NULL){
console.log("Connected to database");
// parse the body of the page and set up object to send to the
// database
}
});
});
router.get('/contact', function(req, res){
res.render('contact', {});
})
module.exports = router;
通常情況下,你不希望你要查詢每次創建一個新的連接蒙哥/插入,儘管爲了簡單起見,它是可以的。除此之外,你似乎走在正確的軌道上,而且我很難理解你需要幫助的確切內容。 – Belfordz
我每次嘗試連接數據庫時都會收到一個錯誤,說錯誤:發送後無法設置標題。我如何設置它,所以它只連接一次,而不是每次我設置一個帖子。 – kevin
這是非常基本的東西,這很難在簡短的StackOverflow評論或答案中解釋。雖然有很多關於此的教程,但應該很容易找到關於通常如何完成的一些示例。 – svens