Node.js使用orm2进行update操作时关联字段无法修改的解决方法

前言

最近在工作中遇到一个问题,在使用Orm2进行model修改时,发现当对关联字段进行update操作时,执行了2次SQL,第一次把值改为了我们期望的值,第二次又会把值改回成原来的值。

经过调查,当autoFetch开启时,会自动取得关联model,此时的model为:

{
roomId: xxx, // 关联的roomId
room: {
// 关联的room对象
}
}

第一次会按照roomId去修改,第二次则会按照fetch的关联对象room进行修改,导致了我们看到的执行了两次SQL的情况。

解决方法

在save操作前将fetch的对象删除即可。

for (var j in originEntity) {
if (_.isObject(originEntity[j])) {
delete originEntity[j];
}
}

originEntity.save(function(err) {
if (err) {
return res.json({ errMsg: err[0].msg });
}

return res.json({ code: 200, data: originEntity });
});

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如有疑问大家可以留言交流,谢谢大家对我们的支持。

(0)

相关推荐

  • Node.js使用orm2进行update操作时关联字段无法修改的解决方法

    前言 最近在工作中遇到一个问题,在使用Orm2进行model修改时,发现当对关联字段进行update操作时,执行了2次SQL,第一次把值改为了我们期望的值,第二次又会把值改回成原来的值. 经过调查,当autoFetch开启时,会自动取得关联model,此时的model为: { roomId: xxx, // 关联的roomId room: { // 关联的room对象 } } 第一次会按照roomId去修改,第二次则会按照fetch的关联对象room进行修改,导致了我们看到的执行了两次SQL的情

  • PHP中查询SQL Server或Sybase时TEXT字段被截断的解决方法

    Author: Wenlong Wu 一.针对MS SQL SERVER数据库 有两种解决方案,如下: 修改php.ini来实现: 打开php.ini,可看到mssql.textsize,mssql.textlimit两个选项: ; Valid range 0 - 2147483647. Default = 4096. ;mssql.textlimit = 4096 ; Valid range 0 - 2147483647. Default = 4096. ;mssql.textsize = 4

  • Node.js如何在项目中操作MySQL

    目录 1.在项目中操作 MySQL的步骤 2.安装与配置 mysql 模块 1.安装 mysql 模块 2.配置 mysql 模块 3.测试 mysql 模块能否正常工作 3.使用 mysql 模块操作 MySQL 数据库 1.查询数据 2.插入数据 3.插入数据的便捷方式 4.更新数据 5.更新数据的便捷方式 6.删除数据 7.标记删除 1.在项目中操作 MySQL的步骤 (1)安装操作 MySQL 数据库的第三方模块(mysql) (2)通过 mysql 模块连接到 MySQL 数据库 (3

  • node.js使用 http-proxy 创建代理服务器操作示例

    本文实例讲述了node.js使用 http-proxy 创建代理服务器操作.分享给大家供大家参考,具体如下: 代理,也称网络代理,是一种特殊网络服务,允许一个终端通过代理服务与另一个终端进行非直接的连接,这样利于安全和防止被攻击. 代理服务器,就是代理网络用户去获取网络信息,就是信息的中转,负责转发. 代理又分 正向代理 和 反向代理: 正向代理:帮助局域网内的用户访问外面的服务. 反向代理:帮助外面的用户访问局域网内部的服务. 一.安装 http-proxy npm install http-

  • js检测离开或刷新页面时表单数据是否更改的方法

    本文实例讲述了js检测离开或刷新页面时表单数据是否更改的方法.分享给大家供大家参考,具体如下: function formIsDirty(form) { for (var i = 0; i < form.elements.length; i++) { var element = form.elements[i]; var type = element.type; if (type == "checkbox" || type == "radio") { if (

  • Node.js+jade+mongodb+mongoose实现爬虫分离入库与生成静态文件的方法

    接着这篇文章Node.js+jade抓取博客所有文章生成静态html文件的实例继续,在这篇文章中实现了采集与静态文件的生成,在实际的采集项目中, 应该是先入库再选择性的生成静态文件. 那么我选择的数据库是mongodb,为什么用这个数据库,因为这个数据库是基于集合,数据的操作基本是json,与dom模块cheerio具有非常大的亲和力,cheerio处理过滤出来的数据,可以直接插入mongodb,不需要经过任何的处理,非常的便捷,当然跟node.js的亲和力那就不用说了,更重要的是,性能很棒.这

  • 解决Vue.js应用回退或刷新界面时提示用户保存修改问题

    在实际应用中,运营人员在编辑数据时不希望因不小心点击了浏览器的回退或刷新按钮导致花费了很长时间编辑的数据丢失.可以采用以下两种手段防止运营编辑时丢失数据: 在运营人员刷新页面或回退时,自动保留数据至浏览器端本地存储,在重新进入编辑页面时再将数据从本地存储中加载到编辑界面. 第二种方法是在运营人员刷新或回退时,强提示运营人员有修改的数据尚未保存,询问是否继续. 无认采用哪一种方式,在技术实现上,我们需要首先能够监听到用户执行回退或刷新页面的动作. 实际上,当用户执行页面刷新时,会触发 window

  • Node.JS段点续传:Nginx配置文件分段下载功能的实现方法

    Html5 提供了一个新的 Range 标签来实现文件的分段下载.在Node.JS中可以配置这个标签来实现文件的分段下载. Header标签 请求 Request Header: 下载 3744 以后的文件内容 range: bytes=3744- 返回 Response Header: 文件总长 15522643 个字节 accept-ranges': 'bytes' content-range': 'bytes */15522643' Nginx配置 首先要配置Nginx支持range标签返

  • JS获取当前时间的年月日时分秒及时间的格式化的方法

    1.获取当前时间 var myDate = new Date(); 2.获取时间中的年月日时分秒 myDate.getYear(); // 获取当前年份(2位) myDate.getFullYear(); // 获取完整的年份(4位,1970-????) myDate.getMonth(); // 获取当前月份(0-11,0代表1月) myDate.getDate(); // 获取当前日(1-31) myDate.getDay(); // 获取当前星期X(0-6,0代表星期天) myDate.g

  • Python操作dict时避免出现KeyError的几种解决方法

    在读取dict的key和value时,如果key不存在,就会触发KeyError错误,如: t = { 'a': '1', 'b': '2', 'c': '3', } print(t['d']) 就会出现: KeyError: 'd' 第一种解决方法 首先测试key是否存在,然后才进行下一步操作,如: t = { 'a': '1', 'b': '2', 'c': '3', } if 'd' in t: print(t['d']) else: print('not exist') 会出现: not

随机推荐