2017-05-26 9 views
0

私はNode.js-Express.js-Mongooseアプリケーションで作業しています。 html形式(EJSファイル)でユーザーの詳細(名前と年齢)を受け入れ、データベースに保存して(mongooseを使用して)、追加されたユーザーの詳細をWebページに表示します。 私は同じもののためにAJAXを使用しています。使用されるファイルは以下のとおりです。Mongooseを使用してフロントエンドJavascriptからデータベースにデータを挿入できません

userview.ejs(フォームが含まれています) - >frontend.js(jqueryのを使用しています) - >users.js(定義されたアドオン()関数を呼び出し、[ファイル] - ルータ) - >userController.js(下記添付) - >userService.js(DB操作を実行する)。

リストの外観を確認してください。 User Form

実際には、新しいユーザーが作成されますが名前は表示されません。

Blank Entries

データベースにPEEKは空白のエントリのIDのみが追加されることを示しています。 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(); 
    } 

//これは、このファイルのuserController.js コンソールのログであるUSER

$(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 

を追加したレコードが未定義であることを示しています。

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に直接データを追加しようとしていますか?私はその理由を見つけることができません!開いている(保護されていない)DBがあるか、フロントエンドに資格情報を格納する必要があります(フロントエンドに何も隠すことができないので、かなりオープンなDBを意味します)。それはないです。 – 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の警告と以下のエラーを受け取ります: controllers \ userController.jsの代わりにres.sendStatus(status)を使用してください:21:34 ユーザー作成! POST/users/add_user 200 14149.870 ms - 2 –

+0

引き続き問題がありますか? @ArjunJain –

+0

いいえ、私はしません。あなたのソリューションは完璧に動作します! –

関連する問題