Mongoose.create正在添加到数据库,但仍捕获错误

时间:2019-06-30 10:11:54

标签: node.js mongodb express mongoose

我正在尝试为产品创建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": {}
}

我做错了什么?

3 个答案:

答案 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);
   });
});