2017-05-26 94 views
0

我正在使用Node.js-Express.js-Mongoose應用程序。 我想以html格式(EJS文件)接受用戶詳細信息(姓名和年齡),保存到數據庫(使用貓鼬)在網頁上顯示添加的用戶詳細信息。 我正在使用AJAX。所使用的文件是:無法將數據從前端Javascript插入到使用Mongoose的數據庫中

userview.ejs(包含表單) - >frontend.js(用了jQuery) - >users.js(路由器文件 - 要求定義的add()函數在userController中) - >userController.js(附在下面) - >userService.js(執行數據庫操作)。

檢查清單應該如何顯示的圖像。 User Form

究竟發生了什麼是創建一個新用戶,但名稱不顯示。

Blank Entries

甲窺視到數據庫顯示,只添加空白條目的編號。 Mongodb snapshot

FRONTEND.js

console.log('Frontend Reached'); 

$(document).ready(function() { 

    var url = '/users/delete_user'; 
    var user_url = '/users/add_user'; 


    function load_users(e) { 
    $.ajax({ 
     url: 'userview.ejs', 
     dataType: 'text', 
     type: 'post', 
     ContentType: 'html', 
     data: $('#user_form').serialize(), 
     success: function(data, textStatus, jQxhr) { 
     console.log(data); 
     $('#list').html(data); 
     //$('#user_form').submit(load_users); 
     }, 
     error: function(jqXhr, textStatus, errorThrown) { 
     console.log(errorThrown); 
     } 
    }); 

    e.preventDefault(); 
    } 

//添加用戶

$(document).on('click', '.btn btn-success', function(e) { 
    e.preventDefault(); 
    var user_name = $("#nameinput").val(); 
    var user_age = $("#ageinput").val(); 
    console.log(user_name); 
    console.log(user_age); 

    $.ajax({ 
     url: 'userview.ejs', 
     dataType: 'text', 
     type: 'post', 
     ContentType: 'html', 
     data: { 
     'user_name': user_name, 
     'user_age': user_age 
     }, 
     success: function(data, textStatus, jQxhr) { 
     console.log(data); 
     load_users(); 
     }, 
     error: function(jqXhr, textStatus, errorThrown) { 
     console.log(errorThrown); 
     } 
    }); 

    e.preventDefault(); 


    }); //onclick 



}); //document ready 

這是userController.js 在這個文件控制檯日誌顯示該記錄是不確定的。

var User = require('../models/usermodel.js'); 
var userService = require('../services/userService'); 

var userController = { 
    add: function(request, response) { 
    var user_name = request.body.user_name; 
    var user_age = request.body.user_age; 
    console.log(user_name); //SHOWS UNdEFINED 
    var newUser = new User({ 
     name: user_name, 
     age: user_age 
    }); 
    console.log(newUser); 
    //var userName = request.body.user_name; 
    //var userAge = request.body.user_age; 
    userService.add(newUser, function(err, added) { 
     if (err != null) { 
     response.send(500); 
     } else { 
     response.send(200); 
     } 
    }); 
    }, 

    delete: function(request, response) { 

    var userId = request.body.user_id; 
    userService.delete(userId, function(err, deleted) { 
     if (err != null) { 
     response.send(500); 
     } else { 
     response.send(200); 
     } 
    }); 
    } 
}; 

module.exports = userController; 
+0

什麼錯誤?問題是什麼?應該發生什麼?究竟發生了什麼?這是一個問題,缺乏你的問題。請參閱[mcve](https://stackoverflow.com/help/mcve)以改善您的問題。 –

+0

你是否試圖直接從前端添加數據到mongodb?先生,我無法找到原因!您需要擁有開放(不安全)的數據庫或將憑證存儲在前端(這意味着非常開放的數據庫,因爲您無法在前端隱藏任何內容)。這是不行的。 – Mort

+0

@NeilLunn我已經做了必要的修改。請讓我知道你是否需要別的東西。 –

回答

0

發送使用JSON.stringify(), 您的數據和指定內容類型「應用/ JSON」讓你的服務器將知道該期待一個JSON。

var data = { 
    'user_name': user_name, 
    'user_age': user_age 
    }, 

$.ajax({ 
    url: 'userview.ejs', 
    type: 'post', 
    contentType: 'application/json', 
    data: JSON.stringify(data), 
    success: function(data, textStatus, jQxhr) { 
    console.log(data); 
    load_users(); 
    }, 
    error: function(jqXhr, textStatus, errorThrown) { 
    console.log(errorThrown); 
    } 
}); 
+0

同樣的問題依然存在。我得到一個Deprecation警告和錯誤如下: 使用res.sendStatus(狀態),而不是在controllers \ userController.js:21:34 用戶創建! POST/users/add_user 200 14149.870 ms - 2 –

+0

你還有這個問題嗎? @ArjunJain –

+0

不,我不知道。您的解決方案完美運作 –

相關問題