• koa + sequelize + mysql 项目实践笔记


    背景

    原本使用php写的一个项目,随着访问量增大,性能出现问题,本来考虑将Php从5.6升级到7.3看能不能得到解决,但是看了一些文章,说node在这些方面更出色(我自己没有验证,边写边验证),加上自己前端方面更擅长,所以决定使用koa来重写项目。正好把一些边角料知识串了一串,这里把整个项目过程中遇到的问题记录一遍。

    1. 开发相关

    a) koa

    登录
    参考

    // 使用koa-session
    // 检验登录
    

    中间件处事能用功能
    中间件一般就是对ctx做扩展,比如增加各种统一返回的处理函数。

    我想直接扩展context的原型,这样不用每个访问都重新加载这些函数,于是我找到这个 扩展contex. 但在扩展中拿到运行时的实例(this)有些问题,待研究。

    前后端分离
    开发时使用nodemon起服务,部署时使用pm2. 在启动程序时分别传入环境变量区分,加载不同的前端资源即可:

    b) sequelize

    事务
    sequelize支持事务,官方代码如下:

    return sequelize.transaction(t => {
      // chain all your queries here. make sure you return them.
      return User.create({
        firstName: 'Abraham',
        lastName: 'Lincoln'
      }, {transaction: t}).then(user => {
        return user.setShooter({
          firstName: 'John',
          lastName: 'Boothe'
        }, {transaction: t});
      });
    
    }).then(result => {
      // Transaction has been committed
      // result is whatever the result of the promise chain returned to the transaction callback
    }).catch(err => {
      // Transaction has been rolled back
      // err is whatever rejected the promise chain returned to the transaction callback
    });
    

    比较简单明了。

    坑爹的修改结果集
    sequelize返回的结果集需要处理下让接口返回,结果无论如何修改都不生效,气爆炸,最后才发现原因它的结果集必须要用特定方法才能修改字段: setDataValue

    mysql

    • 时间格式(每种程序语言的时间都是个复杂的问题)
      mysql有三种时间格式
    // Date
    // Datetime
    // Timestamp
    

    部署相关(先不关注)

    项目达到部署使用有一系列问题需要解决,这里先记录,再逐步解决

    代码压缩

    源码推送

    推送哪些内容?

    pm2部署

    npm install -g pm2
    pm2 start app.js        // 启动
    pm2 start app.js -i max //启动 使用所有CPU核心的集群
    pm2 stop app.js         // 停止
    pm2 stop all            // 停止所有
    pm2 restart app.js      // 重启
    pm2 restart all         // 重启所有
    pm2 delete  app.js      // 关闭
    

  • 相关阅读:
    C++出现 error: no match for 'operator==' (operand types are 'Person' and 'const Person')
    python三元运算符公式/出错怎么看
    我学函数遗漏的东西
    学习函数时一些没注意到的地方
    Python文件操作回顾
    我学习python没有记住的东西
    转载
    UE SC -kismetmathlibrary
    LineTrace跟Overlap开销
    UE4 插件无法读取常见错误
  • 原文地址:https://www.cnblogs.com/magma/p/11203665.html
Copyright © 2020-2023  润新知