我正在尝试为产品创建RESTful API以执行CRUD操作。我正在使用的数据库是MongoDB,并且我正在使用带有Express的mongoose访问数据。当我尝试创建产品时,它将产品添加到数据库中,并且我想将创建的数据的信息发送给用户,但是它从catch块发送数据,并且显示的错误为空。
我的模式
const userSchema = new mongoose.Schema({
_id: mongoose.Schema.Types.ObjectId,
name: {type:String, required:true},
price: {type:Number, required:true}
})
let product = mongoose.model("User",userSchema);
创建产品的端点
app.post("/addprod" ,(req,res) => {
let prodname = req.body.name
let price = req.body.price
product.create({
"_id" : mongoose.Types.ObjectId(),
"name" : prodname,
"price":price
})
.then(res => {
console.log(res)
res.json({
_id:res._id,
name:res.name,
price:res.price,
request:{
method:"GET",
url: "localhost:3000/prod?name=" + res.name
}
})
}
)
.catch(err => res.json({
message1:err
}))
})
控制台输出
{ _id: 5d188eb5ea237a204caba7c7,
name: 'shaurya10',
price: 3000,
__v: 0 }
我希望输出是
{
"_id":"5d188eb5ea237a204caba7c7",
"name":"shaurya10",
"price":"3000",
"request":{
"method":"GET",
"url": "localhost:3000/prod?name=shaurya10"
}
我得到的输出是
{
"message1": {}
}
我做错了什么?
答案 0 :(得分:1)
问题是您在外部函数和内部函数中都将$('.card').on('shown.bs.collapse', function(e) {
var $card = $(this).closest('.card');
$('html,body').animate({
scrollTop: $card.offset().top
}, 500);
});
$('.karte').on('shown.bs.collapse', function(e){
e.stopPropagation();
});
用作响应变量
您可以简单地做到这一点。
res
答案 1 :(得分:0)
可能是产品名称,价格为空。您将它们定义为必填字段:
name: {type:String, required:true},
price: {type:Number, required:true}
更改代码:
let prodname = req.body.name || 'sample product'
let price = req.body.price || '20'
然后检查结果。
答案 2 :(得分:0)
如果您想使用json发送回复...您可以这样做(格式最短)
app.post("/addprod", (req,res) => {
product.create({
"_id" : mongoose.Types.ObjectId(),
"name": req.body.name,
"price": req.body.price
}).then(product => {
res.json(product);
}).catch(err => {
res.json(err);
});
});