Node.js измененная вставка AJAX в MongoDB

#ajax #node.js #mongodb

#ajax #node.js #mongodb

Вопрос:

Я успешно размещаю вставку AJAX в своей базе данных MondoDB.

Предполагается, что пользователь должен заполнить 3 поля,

  • Полное имя
  • Электронная почта
  • Телефон

Что я хотел бы сделать, так это:

сгенерируйте случайное число на стороне сервера и сохраните его как 4-е поле в моем MongoDB.

Также я хотел бы опубликовать его в качестве ответа пользователю.


Вот мой users.js файл (на стороне сервера)

  * POST to adduser.
 */
router.post('/adduser', function(req, res) {
    var db = req.db;
    var codeResponse = generateCode();
    db.collection('userlist').insert(req.body, function(err, result){
        res.send(
            (err === null) ? { msg: '',code: codeResponse } : { msg: err }
        );
    });
});

function generateCode(){
    var code = Math.random() *1000000;
    code = Math.floor(code);
    return code;
}
 

И это мой вызов AJAX (на стороне клиента)

     var newUser = {
        'id2': id2,
        'fullname': $('#addUser fieldset input#inputUserFullname').val(),
        'email': $('#addUser fieldset input#inputUserEmail').val(),
        'phone': $('#addUser fieldset input#inputUserPhone').val(),
    }


   $.ajax({
    type: 'POST',
    data: newUser,
    url: '/users/adduser',
    dataType: 'JSON'
    }).done(function( response ) {

    // Check for successful (blank) response

    if (response.msg === '') {
         console.log(response);
    }
    else {
        alert('Error: '   response.msg);
    }
    });
 

Комментарии:

1. Какую ошибку или непреднамеренный результат вы получаете?

Ответ №1:

Достаточно просто, добавьте его в свой объект перед вставкой и отправкой обратно объекта:

 router.post('/adduser', function(req, res) {
    var db = req.db;
    var document = req.body;

    var codeResponse = generateCode();
    document.code = codeResponse;

    db.collection('userlist').insert(document, function(err, result){
        if (err) //do something
            return;
        else
            res.send(document);
    });
});