SELECT、DELETE、UPDATE
| sql |
orm |
| select |
findAll,findOne,findById,findOrCreate,findAndCountAll |
| delete |
destroy |
| update |
update |
| insert |
create |
| sql |
orm |
| SELECT foo, bar … |
Model.findAll({attributes: [‘foo’, ‘bar’]}); |
| SELECT foo, bar AS baz … |
Model.findAll({attributes: [‘foo’, [‘bar’, ‘baz’]]}); |
| SELECT COUNT(hats) AS no_hats … |
Model.findAll({attributes: [[sequelize.fn(‘COUNT’, sequelize.col(‘hats’)), ‘no_hats’]]}); |
| SELECT id, foo, bar, quz … |
Model.findAll({attributes: {exclude: [‘baz’] }}); |
1 2 3 4 5 6 7 8 9
| Model.findAll({ attributes: ['id', 'foo', 'bar', 'baz', 'quz', [sequelize.fn('COUNT', sequelize.col('hats')), 'no_hats']] }); Model.findAll({ attributes: { include: [[sequelize.fn('COUNT', sequelize.col('hats')), 'no_hats']] } }); SELECT id, foo, bar, baz, quz, COUNT(hats) AS no_hats ...
|
WHERE
| sql |
orm |
| SELECT * FROM post WHERE authorId = 12 AND status = ‘active’ |
Post.findAll({where: { authorId: 2,status: ‘active’}}); |
Operators
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
| Post.update({ updatedAt: null, }, { where: { deletedAt: { $ne: null } } }); // UPDATE post SET updatedAt = null WHERE deletedAt NOT NULL; Post.findAll({ where: sequelize.where(sequelize.fn('char_length', sequelize.col('status')), 6) }); // SELECT * FROM post WHERE char_length(status) = 6; { rank: { $or: { $lt: 1000, $eq: null } } } // rank < 1000 OR rank IS NULL { createdAt: { $lt: new Date(), $gt: new Date(new Date() - 24 * 60 * 60 * 1000) } } // createdAt < [timestamp] AND createdAt > [timestamp] { $or: [ { title: { $like: 'Boat%' } }, { description: { $like: '%boat%' } } ] } // title LIKE 'Boat%' OR description LIKE '%boat%'
|
| op |
define |
| $and: {a: 5} |
AND (a = 5) |
| $or: [{a: 5}, {a: 6}] |
(a = 5 OR a = 6) |
| $gt: 6, |
> 6 |
| $gte: 6, |
>= 6 |
| $lt: 10, |
< 10 |
| $lte: 10, |
<= 10 |
| $ne: 20, |
!= 20 |
| $between: [6, 10], |
BETWEEN 6 AND 10 |
| $notBetween: [11, 15], |
NOT BETWEEN 11 AND 15 |
| $in: [1, 2], |
IN [1, 2] |
| $notIn: [1, 2], |
NOT IN [1, 2] |
| $like: ‘%hat’, |
LIKE ‘%hat’ |
| $notLike: ‘%hat’ |
NOT LIKE ‘%hat’ |
| $iLike: ‘%hat’ |
ILIKE ‘%hat’ (case insensitive) (PG only) |
| $notILike: ‘%hat’ |
NOT ILIKE ‘%hat’ (PG only) |
| $like: { $any: [‘cat’, ‘hat’]} |
LIKE ANY ARRAY[‘cat’, ‘hat’] - also works for iLike and notLike |
| $overlap: [1, 2] |
&& [1, 2] (PG array overlap operator) |
| $contains: [1, 2] |
@> [1, 2] (PG array contains operator) |
| $contained: [1, 2] |
<@ [1, 2] (PG array contained by operator) |
| $any: [2,3] |
ANY ARRAY[2, 3]::INTEGER (PG only) |
| $col: ‘user.organization_id’ |
“user”.”organization_id”, with dialect specific column identifiers, PG in this example –$col取表的字段 |
WARNING
tabel need primarykey:如果没有,Sequlize会自己加个自增主键,可能引起错误
Node
findOrCreate: 查到一个,查不到就新建
1 2 3 4 5 6 7 8 9 10
| models.BrandReview.findOrCreate({ where: { mem_id: mem_id, brand_id: brand_id }, defaults: { score: score } })
|
update:返回值为数据,[2],数字代码改动记录数
destroy:返回数字,代表删除记录数