mongodb .create和.保存之间的 Mongoose 区别

c3frrgcw  于 2022-12-18  发布在  Go
关注(0)|答案(3)|浏览(237)

很久以前,我在Express和Mongoose上对udemy进行了一次训练营,假设我们要在数据中添加新字段,我们执行了如下操作

var playground = require("../models/playground.js");

route.post("/", middleware.isLoggedIn,function (req, res) {

  var name =  req.body.name;
  var image =  req.body.image;
  var description = req.body.description;
  var price = req.body.price;

  playground.create({
    name: name,
    image:image,
    description: description,
    price: price
  }, function(error, newlyCreated){
    if(error) {
      console.log(error)
    }
    else {
      newlyCreated.author.id = req.user._id;
      newlyCreated.author.username = req.user.username;
      newlyCreated.save();
     res.redirect("/playground");
    }
  })
});

现在,这已经超过一年了,我不能理解我在这里做什么(应该添加一些评论),但我确实看到我们正在使用这样的playground.create({
还有这个我完全无法理解

newlyCreated.author.id = req.user._id;
          newlyCreated.author.username = req.user.username;
          newlyCreated.save();

这不是一个主要的问题,但是newlyCreated.save();会做什么呢?我的意思是,它可能会保存我们从前端获得的数据,但是它将如何工作呢?
继续讨论主要问题,我再次学习了一个教程,在该教程中,讲师做了一些像这样简单的事情来保存数据

let author = new Author({  
     name: args.name, 
     age: args.age
       })
 author.save()


那么.create.save之间的一般区别是什么呢?

pvcm50d1

pvcm50d11#

Model.create()是将一个或多个文档保存到数据库的快捷方式。
MyModel.create(docs)对docs中的每个文档执行new MyModel(doc).save()
此函数触发如下中间件。

  • 保存()

参考:https://mongoosejs.com/docs/api.html#model_Model.create

cbwuti44

cbwuti442#

阅读Constructing Documents部分。**.保存().create()**只是将文档添加到集合中的不同方法。
https://mongoosejs.com/docs/models.html

const Tank = mongoose.model('Tank', yourSchema);

const small = new Tank({ size: 'small' });
small.save(function (err) {
  if (err) return handleError(err);
  // saved!
});

// or

Tank.create({ size: 'small' }, function (err, small) {
  if (err) return handleError(err);
  // saved!
});

// or, for inserting large batches of documents
Tank.insertMany([{ size: 'small' }], function(err) {

});
7uzetpgm

7uzetpgm3#

.保存()和.create()执行相同的工作。重要的区别是.save()绕过模式验证,而.create()检查数据是否符合模式,然后在内部触发.save()方法

相关问题