nodejs爬坑记录

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" }]
  });

你可能感兴趣的:(nodejs爬坑记录)