sequlize 原始查询

Sequlize提供的工具函数sequelize.query

原始查询方法

默认情况下,该函数会返回两个参数 - 一个包含结果的数组和一个包含原数据对象。请注意,由于是原始查询,所以返回的元数据与使用的数据库类型有关,其对元数据的处理并不一致

sequelize.query("UPDATE users SET y = 42 WHERE x = 12").spread(function(results, metadata) {
  // Results 会是一个空数组和一个包含受影响行数的metadata 元数据对象
})

如果不想使用元数据,可以查询时指定表示查询类型的type参数,以告诉sequelize 应该怎样去格式化返回结果。

sequelize.query("SELECT * FROM `users`", { type: sequelize.QueryTypes.SELECT})
  .then(function(users) {
    // 并不需要在这spread 展开结果,因为所返回的只有所查询的结果
  })

查询参数替换

原始查询中有两种替换查询参数的方法,以:开头的参数的形式替换或以不命名以?替换。在选项对象中传递参数:

  • 如果传递一个数组,? 会按数组的顺序被依次替换
  • 巢传递一个对象,:key将会用对象的键替换。如果对象中未找到指定键,则会引发异常(反之亦然)
sequelize.query('SELECT * FROM projects WHERE status = ?',
  { replacements: ['active'], type: sequelize.QueryTypes.SELECT }
).then(function(projects) {
  console.log(projects)
})

sequelize.query('SELECT * FROM projects WHERE status = :status ',
  { replacements: { status: 'active' }, type: sequelize.QueryTypes.SELECT }
).then(function(projects) {
  console.log(projects)
})
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容