首页 > 数据库 >Nest.js + TypeOrm:原始SQL查询及其参数绑定

Nest.js + TypeOrm:原始SQL查询及其参数绑定

时间:2023-06-09 15:14:02浏览次数:48  
标签:name Nest table js something SQL query WHERE SELECT

上一篇

Nest.js + TypeOrm:安装、编写实体类

参数化原始SQL查询

使用 DataSource,注意,如果是 PostgreSQL,则参数占位符不能使用问号 ?,只能使用 $n,并且在没有表名的情况下需要指定类型:
否则,会出现错误:PostgreSQL - ERROR: could not determine data type of parameter $1,参见:https://blog.51cto.com/u_10980859/5303844

@Injectable()
export class PermissionsService {
    constructor(
        private readonly dataSource: DataSource,
    ) { }

    async check(id: number, body: CheckDTO) {
        let sql = `SELECT $1::int4`;
        let parameters = [id];
        try {
            let [row1] = await this.dataSource.query(sql, parameters);
            console.log(row1);
        } catch(e) {
            // console.log(e);
        }
        return false;
    }
}

关于绑定占位符的讨论:https://github.com/typeorm/typeorm/issues/881

取决于底层数据库驱动程序:

Oracle: query('SELECT * FROM table WHERE name = :name', [ { val: 'something' } ])
MySQL: query('SELECT * FROM table WHERE name = ?', [ 'something' ])
MSSQL: query('SELECT * FROM table WHERE name = @0', [ 'something' ])
Postgres: query('SELECT * FROM table WHERE name = $1', [ 'something' ])

标签:name,Nest,table,js,something,SQL,query,WHERE,SELECT
From: https://www.cnblogs.com/develon/p/17469237.html

相关文章

  • binlog_parse_clickhouse.py(ETL抽数据工具)将MySQL8.0迁移至ClickHouse
    binlog_parse_clickhouse.py(ETL抽数据工具)将MySQL8.0迁移至ClickHouse原理:将解析binlog和执行SQL语句两个过程由两个线程来执行。其中,解析binlog的线程每次解析完一个事件后通过队列将SQL语句传给SQL执行线程,SQL执行线程从队列中取出SQL语句并按顺序依次执行,这样就保......
  • jsp WebUploader 分片上传
    ​ 我们平时经常做的是上传文件,上传文件夹与上传文件类似,但也有一些不同之处,这次做了上传文件夹就记录下以备后用。首先我们需要了解的是上传文件三要素:1.表单提交方式:post(get方式提交有大小限制,post没有)2.表单的enctype属性:必须设置为multipart/form-data.3.表单必须......
  • sql server 行列转换
    sqlserver行列转换 目录【1】创建测试数据【2】行转列方法1:casewhen方法2:pivot【3】列转行:(或可以用unionall做列传行)【4】行列转换实践(1)常规列转行(2)实用列传行【5】分隔符行列转换1、行转列,以','号为分隔符2.列转行 回到顶部【1】创建测试......
  • MySQL中查询第2-5条记录的语句为
    查询第m行到第n行记录,注意表中的记录下标是从0开始的,就像数组一样select*fromstudentlimitm,n;返回m+1到m+n行记录,m代表开始的下标,n代表查找的结果数,将返回n行结果select*fromstudentlimit2,8;返回3到10行记录 ......
  • 微信JS-SDK
    实例[url]http://203.195.235.76/jssdk/[/url]教程[url]https://www.w3cschool.cn/weixinkaifawendang/h8ap1qe5.html[/url][url]http://qydev.weixin.qq.com/wiki/index.php?title=%E5%BE%AE%E4%BF%A1JS-SDK%E6%8E%A5%E5%8F%A3&oldid=1667[/url]......
  • mysql复合索引、普通索引总结
         去面试被问到了关于“复合索引”的问题,发现自己了解的还不是太全面,特搜索资料,找到下面一篇不错的文章。 对于复合索引:Mysql从左到右的使用索引中的字段,一个查询可以只使用索引中的一部份,但只能是最左侧部分。例如索引是keyindex(a,b,c).可以支持a|a,b|a,b,c3种......
  • .NET的8种JSON序列化反序列化工具供你选择
    在.NET开发中,.NET的JSON序列化反序列化工具除了Newtonsoft.Json和System.Text.Json其实还有很多优秀的开源的序列化和反序列化工具,这些工具有的性能更加优秀,更加轻量等特征。本文将汇总介绍这些.NET中常用的JSON序列化和反序列化工具,供大家选择参考使用。1、Newtonsoft.Json(Jso......
  • python - execjs使用crypto-js
    最近在研究一个网站发现网站使用了des加密,觉得使用python调用js可读性比较高,所以使用了以下方法来实现该网站的内容解密1.安装PyExecJSpip3installPyExecJs2.安装node.jshttps://nodejs.org/en/download3.node安装jsdom,crypto-js可以到py文件目录在运行npm,方便调用np......
  • Qt+QtWebApp开发笔记(五):http服务器html中使用json触发ajax与后台交互实现数据更新传递
    前言  前面完成了页面的跳转、登录,很多时候不刷新页面就想刷新局部数据,此时ajax就是此种技术,且是异步的。  本篇实现网页内部使用js调用ajax实现异步交互数据。  在js中使用ajax是通过XMLHttpRequest来实现的。下载地址  链接:https://pan.baidu.com/s/1tJMTPhIIyVE40......
  • Three.js教程:常见光源类型
    推荐:将NSDT场景编辑器加入你的3D工具链其他系列工具:NSDT简石数字孪生常见光源类型Threejs虚拟光源是对自然界光照的模拟,threejs搭建虚拟场景的时候,为了更好的渲染场景,往往需要设置不同的光源,设置不同的光照强度,就像摄影师给你拍照要设置各种辅助灯光一样。环境光AmbientLight......