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语句中使用 ? , 替换时 会根据?出现的顺序,依次从数组中取出数据 进行替换.
*/