当我使用console.log(req.body)时。上面写着
{
'hero[title]': 'Lorem ipsum <br> Dolor sit amet.',
'hero[description]': 'Dolor sit amet',
uploadon: 'blahblah'
}
但看起来应该是:
{
hero[title]: 'Lorem ipsum <br> Dolor sit amet.',
hero[description]: 'Dolor sit amet',
uploadon: 'blahblah'
}
你知道问题所在吗?我的HTML看起来像:
<div class="field">
<label for="hero[title]">Titel</label>
<input name="hero[title]" type="text">
</div>
<div class="field">
<label for="hero[description]">Beschreibung</label>
<textarea name="hero[description]" id="" cols="20" rows="5"></textarea>
</div>
我的猫鼬模型是:
var mongoose = require('mongoose');
var heroSchema = new mongoose.Schema({
title: String,
description: String,
image: String
});
module.exports = mongoose.model("Hero", heroSchema);
这是我的路线:
app.post("/dashboard/hero", function(req, res) {
Hero.create(req.body, function(err, newlyAdded){
if(err){
console.log(err);
} else {
console.log(newlyAdded);
res.redirect("/dashboard/hero");
}
});
});
我想把它嵌入到一个ejs文件中。
hero[title]
将尝试访问存储在title
中的变量,并在hero
对象中查找具有其值的属性-该对象将中断。这就是为什么在将请求体解析为JS对象时,它被正确地表示为'hero[title]'
这样的字符串的原因。