私はこのブログアプリをbootcamp anndから作成しています。新しいブログを作成するフォームがデータベースにデータを戻さないというこのエラーが発生しました。データベースはそれを空に保存しています。私はmongodbを使用しています。私のデータベースが空のオブジェクトを格納しています。ここapp.jsnodejsフォームがreq.body.blogのデータを返信しない
var express = require("express"),
app = express(),
bodyparser = require("body-parser"),
mongoose = require("mongoose");
mongoose.connect("mongodb://localhost/restful", {
useMongoClient:true
});
app.set("view engine", "ejs");
app.use(express.static("public"));
app.use(bodyparser.json());
// app.use(bodyparser.json({ type: 'application/vnd.api+json' }));
app.use(bodyparser.urlencoded({extended:true}));
//MONGOOSE MODEL CONFIG
//=================================
var blogSchema = new mongoose.Schema({
title: String,
image: String,
body: String,
created: Date //{type: Date, default : Date.now}
});
var blog = mongoose.model("blog" , blogSchema);
// blog.create([{
// title: "test post",
// image :
"https://imagejournal.org/wpcontent/uploads/2017/08/17140945161_586d5e98f7_o-600x300.jpg",
// body : "This is the first post"
// },
// {
// title: "second Post",
// image: "https://images.pexels.com/photos/33109/fall-autumn-red-
season.jpg?h=350&auto=compress&cs=tinysrgb",
// body: "this is a second post"
// }]
//);
//RESTful routes
//==========================================
//==========================================
//Home
app.get("/",function(req,res){
res.redirect("/blogs");
})
//NEW ROUTE
app.get("/blogs/new",function(req,res){
res.render("new");
});
//CREATE ROUTE
app.post("/blogs", function(req,res){
//create blogs
blog.create(req.body.blog, function(err, newblog){
if(err){
console.log("This is if error " + err);
res.render("new");
}
else{
//then redirect to the INDEX
res.redirect("/blogs");
console.log("This is if no error " + req.body.blog + " "+ err);
}
});
});
//SHOW ROUTE
app.get("/blogs/:id", function(req,res){
blog.findById(req.params.id, function(err,foundblog){
if(err){
res.redirect("/blogs");
}
else{
res.render("show", {blog: foundblog});
}
});
});
//INDEX ROUTE
app.get("/blogs", function(req,res){
blog.find({}, function(err,blogs){
if(err)
{
console.log("error");
}
else
{
res.render("index", {blogs:blogs});
}
})
});
//listening port
app.listen(3000,function(){
console.log("Blog app running");
})
のためのTEのコードであり、フォームのコードはこれです:
今コンソールは今、「エラーなし未定義の場合はnullこれがある」を印刷している
<% include ./partials/header.ejs %>
<div class="ui main text container segment">
<div class="ui huge header">New Blog</div>
<form class="ui form" action="/blogs" method="POST">
<div class="field">
<label>Title</label>
<input type="text" name="blogtitle" placeholder="title">
</div>
<div class="field">
<label>Image</label>
<input type="text" name="blogimage" placeholder="image">
</div>
<div class="field">
<label>Body</label>
<textarea name="blogbody" placeholder="Blog body goes here"></textarea>
</div>
<input class="ui inverted big olive button" type="submit" >
</form>
</div>
<% include ./partials/footer.ejs %>
私は私が
blog.create({ name: req.body.blogtitle, image:req.body.blogimage, body:
req.body.blogbody} , function(err, newblog){...});
を渡さなかった何これは動作しているようだが、私はスキーマに多くのパラメータを持っていた場合、私は肝炎すべきですeこれを一つずつ宣言しますか?コースコルトではreq.body.blogとタイプし、すべてのデータが入っていると言っています。
私を助けてください!
モデルを作成する前に 'req.body'を記録してみて、実際に何が得られているのか見てみましたか? – RaghavGarg
私はconsole.logging req.bodyです。ブログ –
あなたが従っているチュートリアルへのリンクを共有してください。 – RaghavGarg