mongoose中Documents的save方法

调用save方法保存数据有的时候是插入有时候是更新,
数据库

我知道save在保存的时候会检测数据的更改,只是更新更改的部分。所以我重复save时,只是createAt更改那么我最后只应该保存了一条数据,不是2条。
当我保存完数据后短时间内重复保存,确实只是看到保存数据只是更新createAt,并没有insert数据,但是过一段较长时间后,我同样保存重复数据就又会insert新的数据。
奇怪!

我知道了,我重启服务器了。。。。
使用nodemon开启服务器,我保存文件后自动刷新重启服务器后,感觉会重新链接数据库,然后同样的数据会重新新建_id,就会重复保存。所以并不是我以为的那种,save不稳定导致,哈哈哈。

原文地址:https://www.cnblogs.com/aloneCode/p/11320253.html

时间: 2024-10-18 06:48:11

mongoose中Documents的save方法的相关文章

Mongoose中关联查询populate的使用

MongoDB中没有join的特性,因此无法使用join进行表的连接和关联查询,在Mongoose中封装了populate方法,在定义一个 Schema 的时候可以指定了其中的字段(属性)是另一个Schema的引用,在查询文档时就可以使用 populate 方法通过引用 Schema 和 id 找到关联的另一个文档或文档的指定字段值.下面是一个简单的栗子: [场景]: 通过学生ID找到学生所在的班级,对应集合: 学生students. 班级clazzs 1 var mongoose = requ

mongoose中给字段添加索引的方法

mongoose中给字段添加索引的方法有两种,一种通过在定义schema的时候配置,如: 1 var animalSchema = new Schema({ 2 name: String, 3 type: String, 4 tags: { type: [String], index: true } 另一种通过index方法添加索引,如给name和type字段添加索引(1和-1分别表示升序索引和降序索引): animalSchema.index({ name: 1, type: -1 });

HTML5中canvas的save和restore方法

canvas的save和restore方法: save() 方法把当前绘画状态的一份拷贝压入到一个保存图像状态的栈中.这里的绘画状态指坐标原点.变形时的变化矩阵(该矩阵是调用 rotate().scale() 和 translate() 的结果).以及图形上下文对象的当前属性值等内容. 1.图像上下文CanvasRenderingContext2D的属性和方法: 属性                              描述canvas                          取

MongoDB中insert方法、update方法、save方法简单对比

MongoDB中insert方法.update方法.save方法简单对比 1.update方法 该方法用于更新数据,是对文档中的数据进行更新,改变则更新,没改变则不变. 2.insert方法 该方法用于插入数据到文档中,也就是给文档添加新数据. 3.save方法 该方法同样用于插入数据到文档中,功能是类似于insert方法的.与insert方法不同的是, save方法是遍历文档,逐条将数据插入进去的,而insert方法是将整个文档整体插入进去的. 由两个方法的源码可以看出来. save方法的写法

调用save()方法,页面显示保存成功,但是数据库中没有值的原因

在DAO层调用save()方法,页面上显示成功,但是在数据库中查找时发现数据没有保存到数据库中的原因可能是: 1.Service层中是否在调用DAO层中的save()方法之前添加注解@Transactional,凡是对数据库的更新操作都要加上该句注解. 2.查看项目中的WEB-INF文件夹下面的application.xml文件,看看<tx:annotation-driven transaction-manager="transactionManager"/>标签中是否缺少

mongoose中connect()、createConnection()和connection的区别和作用

转文:原文 1 mongoose简介 在使用mongodb数据库开发项目中,nodejs环境下可能会使用到mongoose模块连接并操作mongodb数据库.mongoose模块相当于Java中的数据库驱动,例如mysql-connector-driver-xxx.jar等,大体作用都是连接数据库,对数据库中的表增删改查等. 使用方法很简单: npm install mongoose //在项目中安装模块 var mongoose = require('mongoose');//获取模块的引用

schema中的虚拟属性方法

schema中的虚拟属性方法相当于vue中的计算属性,它是通过已定义的schema属性的计算\组合\拼接得到的新的值 var personSchema = new Schema({ name: { first: String, last: String } }); var Person = mongoose.model('Person', personSchema); // create a document var bad = new Person({ name: { first: 'Walt

笔记01 登录、常用配置参数、Action访问Servlet API 和设置Action中对象的值、命名空间和乱码处理、Action中包含多个方法如何调用

Struts2登录 1. 需要注意:Struts2需要运行在JRE1.5及以上版本 2. 在web.xml配置文件中,配置StrutsPrepareAndExecuteFilter或FilterDispatcher 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 <filter>     <filter-name>struts2</filter-name>     <filter-class>org.apache.struts2.di

为何使用二次参数拦截器栈,,为何需要在beforeInput() [即prepareInput(),本项目中分装为beforeInput()方法] 方法中获取employee

因为,使用模型驱动,可以将不为空的employee压入栈顶,从而使得页面中以employee的属性名作为name的Struts标签元素能够获取到对应属性名的属性值,在点击修改后,可以实现回显. 具体的: 由于modelDriven拦截器先于input()方法执行,因此需要将获取employee的方法提前到modelDriven拦截器之前,即在prepareInput()方法获取employee,此时employee就不空了,再在后面执行到modelDriven拦截器时就将employee对象放入