Mongoose validation CastError: Cast to string failed for value

Mongoose validation CastError: Cast to string failed for value

我正在尝试 运行 我在节点中的 .js 脚本,但是在数据库中添加一些新数据时,服务器没有加载并出现此错误(CastError:为值转换为字符串失败)。我没有收到错误有人可以帮助我吗?附加 cmd 的 SS 和代码![在此处输入图片描述][1]

Code is as follows:


var express=require("express");
var app= express();
var bodyParser=require("body-parser");
app.use(bodyParser.urlencoded({extended:true}));
app.set("view engine","ejs");
var mongoose=require("mongoose");

mongoose.set("useNewUrlParser",  true);
mongoose.set("useUnifiedTopology",true);
mongoose.connect("mongodb://localhost/yelp_camp");

var campgroundsschema= new mongoose.Schema({
    name:String,
    image:String
});

var Campground= mongoose.model("Campground",campgroundsschema);


//Campground.create(
  //  {
    //  name:"Granite Hill",
      //image:"https://images.unsplash.com/photo-1487750404521-0bc4682c48c5?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=500&q=60"
    //},function(err,campgrounds){
      //if(err){
       //   console.log(err);
      //}
      //else{
       //   console.log("We have created a new campground");
        //  console.log(campgrounds);
      //}
    //}
    //)


app.get("/",function(req,res){
    res.render("landing");
});


app.get("/campgrounds",function(req,res){
     
     Campground.find({},function(err,allCampgrounds){
        if(err){
            console.log(err);
        }
        else{
            res.render("campgrounds",{campgrounds:allCampgrounds});
        }
     });
});

app.post("/campgrounds",function(req,res){
  var name=req.body.name;
  var image=req.body.image;
  var newCampground={name: name,image: image};
  Campground.create(newCampground,function(err,newlyCreated){
    if(err){
        console.log(err);
    }
    else{
        console.log("we have created a new campground here!!");
          res.redirect("/campgrounds");
        }
  });
});

app.get("/campgrounds/new",function(req,res){
     res.render("newcamp.ejs");

 });


var port = process.env.PORT || 3000;

app.listen(port, function () {
  console.log('Example app listening on port ' + port + '!');
});


Error ScreenShot:  [1]: https://i.stack.imgur.com/9vNPz.png

(请打开此link查看图片)

正在查看您在正文中附加的图像 link。我可以看到你正在发送一个字符串数组,它看起来像这样

[ "C1", "A URL" ]

这实际上是一个数组数据类型,而您在架构中为名称设置的类型是 String.

如果要保存一个字符串数组?您必须将数据类型更改为字符串数组,即

name: [String]

或者您可以将要发送的数组字符串化。使用

JSON.stringify(yourArray)

This 是 mongoose 数据类型的 url,因此您也可以探索其他数据类型。

更新

var image = JSON.stringify(req.body.image);

在上面的代码块中,我对图像数组进行了字符串化。然后我试图保存它和它的工作。