月&盾

生活的精彩要去发现,而不是等待出现

最新文章

pm2设置NODE_ENV环境变量

nodejs中经常使用到环境变量,最常见的如:process.env.NODE_ENV,可以配置环境变量,可以临时设置 *nix:export NODE_ENV=development&& node app.js win:set NODE_ENV=development&& node app.js 一般是作临时变量在系统启动时设置,不影响其他系统,也可同时运行开发环境和生产环境,只需要根据process.env.NODE_ENV来运行不同逻辑即可,而设置环境变量在pm2中可以轻松实现 pm2 start pm2.json --env production -

阅读全文
  • 分类:【Nodejs
  • 浏览(357)
  • 评论(0
  • 发表时间:2018-3-02 11:25:51

pm2日志记录和日志分割

pm2介绍 pm2是nodejs进程管理工具,现在基本是node生产服务器的标准选择,可以帮助我们实现node多进程服务,开启的多个实例自动实现负载均衡。 最重要的是保证node单进程不会因为错误退出,作为守护进程保证nodejs服务不宕机。 总体来说就是有性能监控、自动重启、负载均衡的作用。 pm2-logrotate介绍 pm2本身是可以输出日志文件的,默认的文件路径: error log path │ /home/username/.pm2/logs/app-error-0.log out log path │ /home/username/.pm2/logs/app-o

阅读全文
  • 分类:【Nodejs
  • 浏览(867)
  • 评论(0
  • 发表时间:2018-1-25 17:49:36

pm2的fork模式和cluster模式的区别

pm2的fork模式和cluster模式的区别 fork模式 pm2默认启动的是fork模式,是以单核单进程运行的,在fork模式下可以直接运行coffee-script,PHP,python。 参考:http://pm2.keymetrics.io/docs/tutorials/using-transpilers-with-pm2 cluster模式可以根据CPU数量进行实例扩展,可以开启多进程而不需要修改代码。可提高程序性能和可靠性。类似于分布式系统,只不过是在单台机器上开启多实例,而pm2自带负载均衡。 ** 使用方法 ** pm2 start app.js -i max 使用-i参数

阅读全文
  • 分类:【Nodejs
  • 浏览(530)
  • 评论(0
  • 发表时间:2018-1-17 22:21:51

sequelize外键关联报错SequelizeDatabaseError: Can't write; duplicate key in table '#sql-454_d'

Assistance.belongTo(User)会报以下错误: ALTER TABLE `assistance` ADD CONSTRAINT `assistance_user_id_foreign_idx` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE NO ACTION ON UPDATE CASCADE; Unhandled rejection SequelizeDatabaseError: Can't write; duplicate key in table '#sql-454_d' at Quer

阅读全文
  • 分类:【Nodejs
  • 浏览(353)
  • 评论(0
  • 发表时间:2017-11-11 18:48:56

typescript开发sequelize返回ModelInstance或null值无法获取属性值

从图片中的代码可以看出 let userRecord = await item.getUser();获取到的是Bluebird<UserInstance | null>类型,然后在下面获取对象属性的时候报错,错误信息是: [ts] Object is possibly 'null'. let userRecord: UserInstance | null 说对象可能是null,所以无法获取其中的属性。遇到这种情况请设置typescript的编译选项,tsconfig.json文件中的 "strictNullChecks": true, /* Enable s

阅读全文
  • 分类:【Nodejs
  • 浏览(331)
  • 评论(0
  • 发表时间:2017-10-28 23:28:40

sequelize.js不能将驼峰camelCased命名转化为下划线underscored命名

定义Model的时候有这样两个参数: underscored,underscoredAll, Converts all camelCased columns to underscored if true. Will not affect timestamp fields named explicitly by model options and will not affect fields with explicitly set field option 其意思是说转化所有驼峰字段为下划线字段,但实际情况并不是如此。 var Model = sequelize.define( 'A

阅读全文
  • 分类:【Nodejs
  • 浏览(575)
  • 评论(0
  • 发表时间:2017-10-21 10:34:33

Sequelize批量插入数据

Sequelize批量插入数据 sequelize也提供了批量插入数据的方法:Model.bulkCreate([…object])。 User.bulkCreate([ { username: 'barfooz', isAdmin: true }, { username: 'foo', isAdmin: true }, { username: 'bar', isAdmin: false } ]).then(() => { // Notice: There are no arguments here, as of right now you'll have to... retu

阅读全文
  • 分类:【Nodejs
  • 浏览(1237)
  • 评论(0
  • 发表时间:2017-7-13 14:24:58

nodejs中promise的if流程控制

nodejs中promise的if流程控制 Promise虽然解决了原生回调的金字塔写法,但是并不能很好的处理if else流程,相比起Java等同步方式编写还是有点难度,不过还是有方法写出优雅的代码。 下面用了一个不复杂的例子来说明: 假设一个人去银行开户,存钱,如果这个人是普通用户,需要先1.排队等候,2.开户,3.存钱。 如果是VIP用户,直接进行第2,3步操作。 如果普通用户是黑名单用户不给开户办卡。 var fs = require("fs"); function queue(){ return new Promise((resolve, reject)=>{ fs.re

阅读全文
  • 分类:【Nodejs
  • 浏览(417)
  • 评论(0
  • 发表时间:2017-5-17 22:31:08

typescript泛型的使用方法

typescript(以下简称ts)中泛型如何使用?(以下代码为ts书写) 个人认为开发语言中一些高级特性如果在不太理解的情况下不使用也无妨,无非是代码写的多一点,烂一点。但是我想作为程序猿大家还是会有所追求的。就以泛型来说,不使用也能正常开发,只不过在个别情况下需要写几份看起来相同的代码。比如在不使用泛型的情况下要求函数参数为number类型,并且返回number。 function a(args: number ): number { return args; } console.log(a(123)); 又有另外一个要求,参数为string类型,并且返回string function

阅读全文
  • 分类:【Nodejs
  • 浏览(571)
  • 评论(0
  • 发表时间:2017-5-05 23:01:39