0
我想跟着這Express.js and MongoDB tutorial與使我的索引頁有一個表格,您保存一個電子郵件地址的區別。如何使用Express和Mongo製作一個簡單的表單GET和POST?
這也是迄今爲止主要代碼:
emailprovider.js
var Db = require('mongodb').Db;
var Connection = require('mongodb').Connection;
var Server = require('mongodb').Server;
var BSON = require('mongodb').BSON;
var ObjectID = require('mongodb').ObjectID;
EmailProvider = function(host, port) {
this.db= new Db('email-test', new Server(host, port, {safe: false}, {auto_reconnect: true}, {}));
this.db.open(function(){});
};
EmailProvider.prototype.getCollection= function(callback) {
this.db.collection('emails', function(error, email_collection) {
if(error) callback(error);
else callback(null, email_collection);
});
};
//save new email
EmailProvider.prototype.save = function(emails, callback) {
this.getCollection(function(error, email_collection) {
if(error) callback(error)
else {
if(typeof(emails.address)=="undefined")
emails = [emails];
for(var i =0;i< emails.address;i++) {
email = emails[i];
email.created_at = new Date();
}
email_collection.insert(emails, function() {
callback(null, emails);
});
}
});
};
exports.EmailProvider = EmailProvider;
app.js
var express = require('express')
, routes = require('./routes')
, user = require('./routes/user')
, http = require('http')
, path = require('path')
, EmailProvider = require('./emailprovider').EmailProvider;
var app = express();
app.get('/', routes.index);
app.get('/users', user.list);
//Routes
//get new email form
app.get('/email/new', function(req, res) {
res.render('email_new', {
title: 'Email Address'
});
});
//save new email
app.post('/email/new', function(req, res){
emailProvider.save({
address: req.param('name')
}, function(error, docs) {
res.redirect('/')
});
});
index.js
.form-area
form(method='post')
input(type='text', name='address', placeholder='Your email address')
input(type='submit', value='Send')
我真的不知道emailprovider中發生了什麼。我有點得到了路線,但現在當我嘗試保存一個新的電子郵件,我得到一個Cannot POST /
404錯誤消息。什麼是正確的方法來做到這一點?
謝謝。
編輯:在輸入屬性的玉語法中刪除額外的逗號。
是的,謝謝,我錯過了。我把我的主機和端口,就像在本教程中一樣var var emailProvider = new EmailProvider('localhost',27017);''和''req.param'到'('address')'而不是''name'' 。 – Jryl