Sequelize 查询
sequelize.query()
方法以及参数
1 | sequelize.query('your query', [, callee], [, options], [, replacements]) |
简单查询
1 | sequelize.query("SELECT * FROM users").success(function(users) { console.log(users) }) |
映射到模型定义
1 | sequelize .query('SELECT * FROM users', Users) .success(function(users){ console.log(users) }) |
用户模型定义如下:
1 | var moment = require('moment'); module.exports = function (sequelize, DataTypes) { var user = sequelize.define('user', { id: { type: DataTypes.INTEGER(11).UNSIGNED, primaryKey: true, autoIncrement: true, unique: true, allowNull: false, comment: '用户ID', description: '用户ID' }, username: { type: DataTypes.STRING, allowNull: false, comment: '用户名', description: '用于登陆的用户名称', search: true }, hashed_password: { type: DataTypes.STRING, allowNull: false, comment: '密码,可为明文,也可以为密码的SHA1值,如果是HASH值,长度必须等于40', description: '密码HASH', search: false }, mail: { type: DataTypes.STRING, allowNull: true, comment: '邮件地址', defaultValue: '', search: true }, admin: { type: DataTypes.BOOLEAN, allowNull: false, defaultValue: 0 }, status: { type: DataTypes.INTEGER(11).UNSIGNED, allowNull: false, defaultValue: 0, comment: '用户状态' }, last_login: { type: DataTypes.DATE, allowNull: true, comment: '上次登录时间,时间格式为 YYYY-MM-DD HH:mm:ss', defaultValue: null, get: function(){ return moment(this.getDataValue('updated_at')).format('YYYY-MM-DD HH:mm:ss'); } }, salt: { type: DataTypes.STRING, allowNull: true, defaultValue: null } }, { comment: '用户基本数据表', getterMethods: { created_at: function () { return moment(this.getDataValue('created_at')).format('YYYY-MM-DD HH:mm:ss'); }, updated_at: function () { return moment(this.getDataValue('updated_at')).format('YYYY-MM-DD HH:mm:ss'); } }, classMethods: { associate: function (models) { user.hasMany(models.device); user.hasMany(models.business); user.hasMany(models.billing); user.hasMany(models.favorite); user.belongsTo(models.payment_type); user.belongsTo(models.payment_method); user.hasOne(models.box); } } }); return user; }; |
选项是一个又如下keys的对象:
1 | sequelize .query('SELECT 1', null, { // 一个函数(或为false) 用于记录每次发送到数据库服务器的SQL查询 logging: console.log, // 如果plain设置为true,那么sequelize只返回结果集的第一行记录. 如果为false返回查询的所有记录 plain: false, // 如果查询没有关联的模型定义,设置为true raw: false }) |
第二个参数为空,当我们设置{raw:true}
,第二个参数将被忽略, 改查询任然返回一个原始对象
1 | sequelize .query('SELECT * FROM projects', null, { raw: true }) .success(function(projects) { console.log(projects) }) |