提问者:小点点

mongo输入名称另存为字符串


当我使用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文件中。


共1个答案

匿名用户

hero[title]将尝试访问存储在title中的变量,并在hero对象中查找具有其值的属性-该对象将中断。这就是为什么在将请求体解析为JS对象时,它被正确地表示为'hero[title]'这样的字符串的原因。