出于某种原因,我对mongodb数据库的jquery帖子请求的正文始终为空。我已经在其他应用程序(如失眠症和python终端)上尝试了相同的发布请求。
但是,此html脚本与快速服务器的目录位于同一目录中,因此无法发送发布请求
代码:
$("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);
});
用猫鼬模式定义的用户模式:
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;
错误发布请求错误之前的json是我尝试发送到数据库的实际数据。如果我要复制粘贴此json并在失眠时尝试发布,则可以。但是我需要它在这里工作。
您无需在data: JSON.stringify(post_JSON)
中使用字符串化。只需发送对象,jQuery将负责其余的工作。
您需要将Content-type
标头设置为application/json
,以指示数据类型。由于Jquery.ajax
使此操作变得更容易,因此建议您改用它:
$.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);
}
});