为什么保存方法在find方法回调中不起作用?

时间:2019-05-18 03:26:52

标签: javascript node.js mongodb mongoose

我想在MongoDB中获取最后插入的_id,然后插入一个新文件,该文件从最后一个_id开始递增并保存它。 我写这段代码只是得到了最后一个_id,但没有保存文档

Product.find({}, function(err , result)
    {
           if(!err)
           {
               result.forEach((p)=>{
                   count = p._id;
               });
               var product = new Product();
               product._id = count++;
               product.Name  = req.body.Name;
               product.Price = req.body.Price;
               product.Quantity = req.body.Quantity; 
               product.Imgsrc = req.body.Imgsrc;
               product.Cat_id = req.body.Cat_id;
               product.save((err, result)=>
               {
                    if(!err)
                    console.log(result);
               });
          }
     }

我的模块是

   const mongoose = require('mongoose');

var ProductSchema = new  mongoose.Schema({

    _id : {type : Number } , 
    Name : {type : String} , 
    Price : {type :Number} ,
    Quantity  : {type : Number} , 
    Imgsrc : {type : String} , 
    Cat_id :   { type: Number , ref : 'Categorys' } 
});


var product = mongoose.model("Product", ProductSchema, "Product")

module.exports = product;

1 个答案:

答案 0 :(得分:0)

我真的认为您应该尝试重新编写这段代码:

Product.find({}, {sort: {_id: -1}, limit: 1}, function(err, result) {
    if(err) {
         console.log(err)
    }

    var count = result[0]._id;
    var product = new Product({
         product._id: ++count,
         ...req.body
    });

    product.save(err => console.log(err));
  });

如果我没记错的话.save()方法不返回保存的文档,但是即使这样,如果保存时出现任何错误,代码也不会停止,因为 假设“!err”执行“您的工作”。 JavaScript不会在意是否会发生某些错误,并且您不会抛出该错误,因此必须对其进行记录以查看是否存在任何错误。