usage
定義好表對應的model
const Sequelize = require('sequelize');
// 建立連接
const sequlize = new Sequlize('databaseName', 'user', 'password', {
host: 'dataBaseServerHost',
pool: {
max: 20,
min: 0
}
});
const model = sequelize.define('modelname', {
// ...
},
{
// ...
});
使用
sequlize.query(`select * from modelName`)
.spread(function(searchResult, metaDate) {
// ...deal result
});
——————————————————分割線(以下爲補充的說明)—————————————————–
搜索結果的說明
sequlize.query根據數據庫的返回,總會返回一個promise對象,其中包含了兩個數據對象: 搜索的結果數組 & 搜索的元數據對象(metadate,例如 affected rows etc.).
但是,不同的數據庫語言,對搜索結果的返回也不一樣.
mysql的元數據直接存在搜索結果數組的屬性中.因此,mysql的sql查詢,返回的searchResult和metaDate是指向一個對象
query configuration
- type
設定查詢的類型.
// 以下類型,告知sequlize只需要查詢結果(spread可以不要使用).還有其他可以設置的類型,閱讀文檔.
sequlize.query(`select * from modelName`, {type: sequelize.QueryTypes.SELECT})
.then(function(searchResult) {
// ...deal result
});
- model
告知sequlize將結果處理成 model對象
// model參數設置成model對象, 將會使返回的結果是一個model的實例.否則就是單純的數據對象組成的數組.
sequlize.query(`select * from modelName`, {model: model})
.spread(function(searchResult, metaDate) {
// ...deal result
});
- replacements
替換字符串(-_-想不出好名字,直接看效果)
// 對象類型
sequlize.query(`select * from tableName where name=:name`, {replacements: {name: '@sunhao'}, type: sequelize.QueryTypes.SELECT})
.then((data) => {
// ...
});
// 數組類型
sequlize.query(`select * from tableName where name=?`, {replacements: ['@sunhao'], type: sequelize.QueryTypes.SELECT})
.then((data) => {
// ...
});
// 以上兩種相當於
// select * from tableName where name =`@sunhao`;
// 說明
/*
replacements設爲對象obj, 在query語句中使用 :key , 替換時 會使用obj[key]替換.
如果找不到該數據.就會throw Exception.
*/
/*
replacements設爲數組, 在query語句中使用 ? , 替換時 會根據?出現的順序,依次從數組中取出數據 進行替換.
*/