前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Sequelize修改查询后的数据

Sequelize修改查询后的数据

作者头像
用户6256742
发布2022-07-06 14:59:56
1.7K0
发布2022-07-06 14:59:56
举报
文章被收录于专栏:网络日志网络日志网络日志

在使用Node.js进行服务端开发时我们通常使用Sequelize作为ORM框架,同时使用TypeScript作为开发语言。在我们查询数据时,通常需要根据前端的参数来动态处理一些数据库查询出来的数据,这些处理无法通过模型中的get进行,只可以在路由函数中进行处理。

很多开发者会选择直接遍历查询的rows进行属性的添加,但是如果使用了TypeScript会报错。这里举个例子。

那我们应该怎么处理呢?可以在map中使用dataValues,直接修改dataValues的值来达到修改数据,但是这样不够灵活,并且使用TS进行开发时有报错。我没有在模型中定义user_id但是我添加了一个,使用dataValues是可以的,但是有类型报错(应该是我TS版本的问题,各位同学可以尝试一下,把结果告诉我),使用forEach也可以,我这里只是一个Demo

同时我们也可以使用JSON.parse(JSON.stringify)深拷贝,这里不过多赘述。

Sequelize提供了几个方法:

模型中单个属性有个toJSON的方法,可以获取到get函数处理后未被Sequelize加工的对象。

  function getTypeTree() {
   return rows.map(item => {
       let _item = item.toJSON();
       return !_item.belong
         ? Object.assign({ children: rows.filter(_item => _item.belong == item.id) }, item.toJSON())
         : false;
     }).filter(item=>item);
  }

同时还要另一种使用get()

    function getTypeTree() {
      return rows
        .map(item => {
          let _item = item.get({ plain: true });
          return !_item.belong
            ? Object.assign(
                { children: rows.filter(_item => _item.belong == item.id) },
                item.toJSON()
              )
            : false;
        })
        .filter(item => item);
    }

和toJSON一样使用,,对于他们的区别和用法,这是我在其他网站查询到的;

toJSON:将当前实例转换为JSON形式,意味着会从数据库中取值,并应用所有自定义的访问器。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档