nodejs爬坑记录
2018-05-26 本文已影响91人
Vijay_
nodejs爬坑记录
Sequelize
- include连表时可以设置
required
属性会进行内联(innerJoin,查询结果左右两边都有值才获取)操作,默认添加了where属性则会将required设置为true,注意:required仅和父级进行内联 - db.transaction(async t => {xxx...})中的子方法必须都要有await 使其都在同一条线程中,不然不能在同一个事务中提交,会出现以下错误 注意在同一个事务中的所有操作都要await 必须在一个线程 不然不触发
commit has been called on this transaction(a0989c57-6b52-4093-87a7-02d5ca7e4b08), you can no longer use it. (The rejected query is attached as the 'sql' property of this error)
-
targetKey可以用在关联中指定目标键,默认是关联另一张表的主键
-
在hasMany中 可以用sourceKey来指定源键,默认为主键
注意:sourceKey必须为数据库字段名,不能使用生成的驼峰式别名 -
多表查询时防止列名冲突最好是把列放在最外层处理
const teamModels = await UserTeamRelation.findAll({
where: { leaderId: userId },
//include代表在原先的字段基础上再加一个字段,exclude表示排除某个字段
attributes: {include:[[Sequelize.fn("SUM", Sequelize.col("userIntegral.integral")), "userIntegral.integral"]]},
include: [{ model: UserIntegralModule, where: { userId }, as: "userIntegral" }
, { model: User, as: "member" }]
});