Тело почтового запроса пусто - PullRequest
0 голосов
/ 22 февраля 2020

Тело моего jquery почтового запроса к моей базе данных mongodb всегда почему-то пусто. Я пробовал такой же пост-запрос на других приложениях, таких как бессонница и python на терминале.

Hovewer, этот скрипт html, который находится в том же каталоге, что и сервер express, не может для отправки почтового запроса

код:

$("form").submit(function (event) {

            //getting the form data
            var input_values = $(this).serializeArray();
            var post_JSON = {};
            $.each(input_values, function (i, field) {
                post_JSON[field.name] = field.value;
            });
            console.log(JSON.stringify(post_JSON));

            //Post request to mongo db
            $.post("http://localhost:5000/users/add",                   // url
                JSON.stringify(post_JSON),                              // data to be submit

                function (data, status, jqXHR) {                        // success callback
                    console.log('status: ' + status + ', data: ' + data);
                },

                "json")
                .fail(function (xhr, status, error) {
                    console.log(xhr);
                });

схема пользователя, определенная с помощью mon goose схемы:

var UserSchema = new Schema({
    username: {
        type: String,
        required: true,
        trim: true,
    },
    password: {
        type: String,
        required: true,
    },
    favourites: [String],
    profile_img: Buffer,
    email: {
        type: String,
        match: /.+@.+/i, //Validates email ids
        unique: true,
        required: true,
    },
    search_history: [String],
    phone_number: {
        type: String,
        maxlength: 10,
        match: /^\d{10}$/,  //Validates phone number
    },
});

const User = mongoose.model('User', UserSchema);

module.exports = User;

вот журнал ошибок консоли: enter image description here

* * * * * * * * * * * * json Перед ошибкой запроса о неправильной публикации являются фактические данные, которые я пытаюсь отправить в базу данных. Если бы я должен был скопировать вставить json и попробовать пост в бессоннице, он работает. Но мне нужно, чтобы он работал здесь.

Ответы [ 2 ]

2 голосов
/ 22 февраля 2020

Вам нужно установить заголовок Content-type на application/json, чтобы указать тип ваших данных. Поскольку Jquery.ajax делает это проще, я бы порекомендовал вам go с этим вместо:

$.ajax
({
    url: 'http://localhost:5000/users/add',
    type: 'post',
    data: post_JSON,
    contentType: 'application/json',
    dataType: 'json',
    success: function (data, status, jqXHR) {
        console.log('status: ' + status + ', data: ' + data);
    },
    error: function (xhr, status, error) {
        console.log(xhr);
    }
});
1 голос
/ 22 февраля 2020

Вам не нужно использовать stringify в data: JSON.stringify(post_JSON). Просто отправьте объект и jQuery позаботится об остальном.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...