2016-03-03 80 views
3

這是我index.js文件...後數據不被認可節點JS

var express = require('express'); 
var router = express.Router(); 

/* GET home page. */ 
router.get('/', function(req, res, next) { 
    res.render('index', { title: 'QChat' }); 
}); 
router.post('/login', function(req, res) { 
    console.log("processing"); 
    res.send('respond with a resource'); 
}); 
module.exports = router; 

這裏是我使用的存儲POST數據的代碼到我的MongoDB數據庫。這個位於我app.js文件...

var mongoose = require('mongoose'); 
mongoose.connect('mongodb://localhost/user'); 
var db = mongoose.connection; 
var Schema = mongoose.Schema; 

db.on('error', console.error); 
db.once('open', function() { 
    console.log("connected"); 
    var Schema = new mongoose.Schema({ 
     mail : String 
    }); 
    var User = mongoose.model('emp', Schema); 
    app.post('/login', function(request, response){ 
     console.log("here"); 
     new User({ 
      mail: request.body.email 
     }).save(function(err, doc) { 
     if (err) 
      res.json(err); 
     else 
      console.log('save user successfully...'); 
     }); 
    }); 

代碼工作正常,直到它到達app.post,之後,似乎閱讀代碼的其餘部分不會。

我知道我的index.js文件有效,因爲當我提交表單時,我得到一個顯示respond with a resource(因爲發送函數)的頁面。但由於某種原因,app.post沒有被讀取,我錯過了什麼?

這裏是我的玉HTML證明我正確地實現一切......

form(class="inputs", action="/login", method="post") 
    input(type="text", name="email",class="form-control", id="emailLogin", placeholder="Queen's Email") 
    input(type="submit",name = "homePage" class ="loginButton" value="Log In" id="loginButton") 

回答

3

請儘量將以下代碼出來db.once('open')

db.on('error', console.error); 
db.once('open', function() {}); 

app.post('/login', function(request, response){ 
    console.log("here"); 
    new User({ 
     mail: request.body.email 
    }).save(function(err, doc) { 
    if (err) 
     res.json(err); 
    else 
     console.log('save user successfully...'); 
    }); 
}); 

另一個問題在你的代碼,請確保mongoose.model的第一個參數是User,否則會彈出一個錯誤。

var UserSchema = new mongoose.Schema({ 
    mail : String 
}); 
var User = mongoose.model('User', UserSchema); 
+0

終於讓它開始工作了,感謝您的幫助 – Bolboa