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);
在上面的代码块中,我对图像数组进行了字符串化。然后我试图保存它和它的工作。
我正在尝试 运行 我在节点中的 .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);
在上面的代码块中,我对图像数组进行了字符串化。然后我试图保存它和它的工作。