我想從表單資料創建一個 Mangoose 物件。
這是 HTML 頁面的 JS 代碼:
const easyMDE = new EasyMDE({element: document.getElementById('body_content')});
$(document).ready(function () {
$("form").submit(function (event) {
var formData = {
'body_content': easyMDE.value(),
'name': $('input[name=name]').val(),
'seo_title': $('input[name=seo_title]').val(),
'image_url': $('input[name=image_url]').val(),
'template': $('input[name=template]').val(),
'type': $('input[name=type]').val(),
'slug': $('input[name=slug]').val(),
'seo_description': $('input[name=seo_description]').val()
};
$.ajax({
type: "POST",
url: "/nxapi/page/",
data: formData,
dataType: "json",
encode: false,
}).done(function (data) {
console.log(data);
});
event.preventDefault();
});
});
這是控制器代碼:
const Page = require('../models/Page');
exports.createPage = (req, res, next) => {
const page = new Page({
type: req.body.type,
name: req.body.name,
template: req.body.template,
image_url: req.body.image_url,
seo_title: req.body.seo_title,
seo_description: req.body.seo_description,
body_content: req.body.body_content,
});
page.save().then(
() => {
res.status(201).json({
message: 'Post saved successfully!'
});
}
).catch(
(error) => {
res.status(400).json({
error: error
});
}
);
};
我的模型:
const mongoose = require('mongoose');
const pageSchema = mongoose.Schema({
type: { type: String, required: true },
name: { type: String, required: true },
template: { type: String, required: true },
slug: { type: String, required: true },
image_url: { type: String },
seo_title: { type: String },
seo_description: { type: String },
body_content: { type: String },
created: { type: Date, default: Date.now() },
modified: { type: Date, default: Date.now() },
});
module.exports = mongoose.model('Page', pageSchema);
當我提交表單時,我收到了這個錯誤:
Page validation failed: slug: Path `slug` is required.
我嘗試以另一種方式在 JSON 中編碼表單資料,但我仍然檢查提交的資料,并且控制器功能很好地接收了所有內容。我可以以 console.log(req.body.type) 為例,并且正確顯示了該值。
如果我 console.log req.body 變數,這就是我得到的:
{
body_content: 'Test',
name: 'Test',
seo_title: 'Test SEO',
image_url: 'image.jpg',
template: 'article-v1',
type: 'article',
slug: 'test',
seo_description: 'Description SEO'
}
我在我的 app.js 中添加了:
const bodyParser = require("body-parser")
app.use(bodyParser.urlencoded({ extended: true }));
我不明白我做錯了什么。有人可以幫我嗎?
非常感謝,
uj5u.com熱心網友回復:
slug創建物件時需要指定欄位。
const page = new Page({
type: req.body.type,
name: req.body.name,
template: req.body.template,
image_url: req.body.image_url,
seo_title: req.body.seo_title,
seo_description: req.body.seo_description,
body_content: req.body.body_content,
slug: req.body.slug
});
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/429950.html
