Sequlize提供的工具函數(shù)sequelize.query
原始查詢方法
默認(rèn)情況下叫胖,該函數(shù)會(huì)返回兩個(gè)參數(shù) - 一個(gè)包含結(jié)果的數(shù)組和一個(gè)包含原數(shù)據(jù)對(duì)象震檩。請(qǐng)注意揍拆,由于是原始查詢长搀,所以返回的元數(shù)據(jù)與使用的數(shù)據(jù)庫類型有關(guān)锰提,其對(duì)元數(shù)據(jù)的處理并不一致
sequelize.query("UPDATE users SET y = 42 WHERE x = 12").spread(function(results, metadata) {
// Results 會(huì)是一個(gè)空數(shù)組和一個(gè)包含受影響行數(shù)的metadata 元數(shù)據(jù)對(duì)象
})
如果不想使用元數(shù)據(jù)谚攒,可以查詢時(shí)指定表示查詢類型的type參數(shù)阳准,以告訴sequelize 應(yīng)該怎樣去格式化返回結(jié)果。
sequelize.query("SELECT * FROM `users`", { type: sequelize.QueryTypes.SELECT})
.then(function(users) {
// 并不需要在這spread 展開結(jié)果馏臭,因?yàn)樗祷氐闹挥兴樵兊慕Y(jié)果
})
查詢參數(shù)替換
原始查詢中有兩種替換查詢參數(shù)的方法野蝇,以:開頭的參數(shù)的形式替換或以不命名以?替換嗤疯。在選項(xiàng)對(duì)象中傳遞參數(shù):
- 如果傳遞一個(gè)數(shù)組谈秫,? 會(huì)按數(shù)組的順序被依次替換
- 巢傳遞一個(gè)對(duì)象,:key將會(huì)用對(duì)象的鍵替換融蹂。如果對(duì)象中未找到指定鍵帮寻,則會(huì)引發(fā)異常(反之亦然)
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)
})