我想在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;
答案 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不会在意是否会发生某些错误,并且您不会抛出该错误,因此必须对其进行记录以查看是否存在任何错误。