• sequelize使用原生语句


      看一段官网中代码例子,一一说明

    //1
    sequelize.query('SELECT 1', {
      logging: console.log,
      plain: false,
      raw: false,
      type: Sequelize.QueryTypes.SELECT
    })
    
    //2
    sequelize
      .query('SELECT * FROM projects', { raw: true })
      .then(projects => {
        console.log(projects)
      })
    //3
    sequelize.query('SELECT * FROM projects WHERE status = ?',
      { replacements: ['active'], type: sequelize.QueryTypes.SELECT }
    ).then(projects => {
      console.log(projects)
    })
    //4
    sequelize.query('SELECT * FROM projects WHERE status = :status ',
        { replacements: { status: 'active' },
        type: sequelize.QueryTypes.SELECT }
    ).then(projects => {
      console.log(projects)
    })
    • sequelize中提供了query函数,用于直接操作原生语句

    • 该函数将返回两个参数:结果数组和包含元数据的对象,对于mysql将是返一对象的两个引用。

    • query函数的第二个参数,是一个对象,对象里面几个常用参数进行说明。

      1. pain:如果plain为真,那么sequelize只返回第一个记录结果集。如果为false,则返回所有记录。
      2. type:正在执行的查询的类型(具体哪些去看官网api)。查询类型影响返回结果之前的格式化方式。
      3. raw:查询对类型是否有模型定义,如果您的查询没有模型定义,请将此设置为true。
      4. logging: console.log记录查询的函数,是否会为发送的每个SQL查询调用到服务器。
    • 对于查找条件where后面的字段

      1. 如果传递数组,? 将按它们在数组中出现的顺序进行替换。
      2. 如果传递了一个对象,:key则将替换该对象中的键。如果对象包含查询中未找到的键,会抛出查询异常。
    • 对于替换where后面的变量,也可以使用 in 关键字从数组匹配,也可以使用通配符 like% 等。代码如下:

      //in关键字使用官网例子
      sequelize.query('SELECT * FROM projects WHERE status IN(:status) ',
        { replacements: { status: ['active', 'inactive'] }, type: sequelize.QueryTypes.SELECT }
      ).then(projects => {
        console.log(projects)
      })
      
      //like通配符关键字使用官网例子
      sequelize.query('SELECT * FROM users WHERE name LIKE :search_name ',
        { replacements: { search_name: 'ben%'  }, type: sequelize.QueryTypes.SELECT }
      ).then(projects => {
        console.log(projects)
      })
    • 查询的时候还可以直接传递model,如果传递模型,则返回的数据将是该模型的实例,上面其它字段也可以在这使用

    sequelize
      .query('SELECT * FROM projects', {
        model: Projects,
        mapToModel: true // 如果有任何映射字段,则在这里传递true
      })
      .then(projects => {
        // Each record will now be an instance of Project
      })
  • 相关阅读:
    BigTale
    GFS Google File System(中文翻译)
    MapReduce
    Google MapReduce/GFS/BigTable三大技术的论文中译版
    Linux常用命令大全
    linux常用命令
    Oracle复杂查询
    jquery on事件jquery on实现绑定多个事件
    Java 多线程(六) synchronized关键字详解
    什么才算是真正的编程能力?
  • 原文地址:https://www.cnblogs.com/goloving/p/13440213.html
Copyright © 2020-2023  润新知