node.js 下 sails orm框架 WaterLine 生命周期介绍

上一篇是关于 sails 定义模型models 属性字段定义类型 这一篇和大家分享关于 sails 的 orm框架 WaterLine 在与数据库操作过程中的生命周期控制. 生命周期 WaterLine 在执行过程中的生命周期可以简单的理解为: 调用前干什么 调用中..... 调用后干什么 具体有哪些操作会执行上面的生命周期 创建 create 创建记录时生命周期依次执行下面几个步骤: 验证模型数据之前.. 验证模型数据之后.. 创建记录之前.. 创建记录之后.. beforeValidate: fn(values, callback) afterValidate: fn(values

[投稿] 北京 招聘 node.js 全栈工程师

联系站长免费投稿发布招聘信息 职责 基于node.js 服务端开发 职位 node.js 全栈工程师 经验 2 年以上Server 开发 学历 大专以上 坐标 10号线地铁健德门站 要求 JavaScript 基本概念清晰 熟练掌握闭包、事件、回调、Promise 熟练掌握NodeJS核心模块的和常用模块 熟悉Node.js及其相关工具 有服务器端开发背景 (.NET、 Java、Python、PHP等其中一种后端语言的开发经验) 熟悉 MongoDB,Redis,MySQL,RabbitMQ 一种或多种 能阅读理解英文文档 GitHub帐号开通时间在半年以上 可以独立编

Waterline Models 字段定义类型设置

Waterline Models 字段定义类型设置 waterline 中涉及到的字段类型如下: string text integer float date time datetime boolean binary array json 模型属性 module.exports = { identity: 'Article_content', autoCreatedAt:false, autoUpdatedAt:false, tableName:'Article_Content', autoPK:false, attributes: { } } ide

sails 框架下 Waterline ORM 常用查询方法

之前有一篇简单介绍了 Sails下orm框架 waterline Waterline 常用的查询方法 find 条件查询 事例: models.user.find().exec(function(err, models) { if(err) return res.json({ err: err }, 500); }); 上面事例的 find 方法无参数,相当于全表查询,最后执行 exec 方法拿到数据. 现在我们来看下 find 方法可以接受哪些参数呢. find 方法可以接收 3类参数: 过滤条件 where 查询条数限制 skip 和 limit 排序条件 so

sails 框架下的 orm 实现 - Waterline

上一篇介绍了 使用sails框架快速搭建项目 今天和大家分享 sails 另外一个重要的功能模块: sails的ORM实现 什么是ORM Java 中的 Hibernate 框架的一个重要功能便是将数据库中的数据与 Java 中的对象进行映射,被称为 ORM (Object Relational Mapping), Node.js 里常用的 Mongoose ,便是将 MongoDB 的文档,映射为 JavaScript 的对象, 而 Waterline 可以看做是一个支持多种数据库的 Mongoose ,使得可以用一样的代码来实现对多种数据库的操作,无论是关系数据库还是文档数据库,都可

sails 特色路由 blueprints 的支持及自定义路由

blueprints 是 sails 框架特色功能 Sails中的路由,blueprint 功不可没,网上翻译成 "蓝图" , Sails的blueprint是负责指挥每一条客户端请求应该分配到服务器端的哪个Action去 ,你可以理解成路由的"调度中心" blueprint主要分为三种:RESTful routes、Shortcut routes、Action routes . RESTful routes 当路径诸如: /:post 或者 /:post/:id的时候,blueprint会根据HTTP的动作(GET、POST、DELETE、PUT等

node.js 环境下使用 sails 框架搭建服务

什么是Sails Sails.js使部署一个定制的企业级Node.js应用变成一件极为简单的事,它的设计模仿了像Ruby on Rails这样的MVC框架,但是更支持现代应用的开发需求:可扩展的数据驱动层的API,面向服务的架构,Sails.js允许你方便快速得使用Node.js生成应用,并通过MVC模式来使管理和维护代码变得更加简单. 使用 Sails Sails.js 依赖 node.js ,使用时确保你的环境安装了 node.js 环境. npm install sails -g 搭建项目 安装了 node.js 和 sails.js 的环境,只需要一条命令即可创建 sails 框架

微信第三方活动 关注微信公众号才能参与

#产品要求:必须先关注公众号才能参与活动 ###上面需求涉及到的几个点: 1.access_token中继服务 2.第三方页面授权 3.获取微信用户信息 前面有一篇 node.js定时获取access_token 那么根据此博文我们可以解决 access_token 中继服务的创建 第三方页面授权 前提:必须微信服务号 且 第三方站点域名设置为微信管理后台安全域 获取微信用户信息 前提:微信管理后台开通开发者模式,且微信回调接口调试无误. 如何在页面授权时判断用户是否关注 首先拉取当前公众号下所有关注用户 (存储用户 openid ) 然后根据存储的所有用户openid 去获取

node.js 微信开发 提交菜单

前面连续分享2篇关于微信开发的文章. node.js 定时获取 access_token 使用 wechat 开发微信回调接口 今天分享 node.js 开发微信菜单 前提: 1.首先是切换到了开发者模式 2.微信管理后台已经授权自定义菜单,如下图例是没办法提交菜单的 当你的微信从编辑模式切换到开发者模式时, 之前你手动定义的关键词回复, 手动创建的菜单全部失效. 微信自定义菜单 说白了非常简单. 微信自定义菜单就是一次 POST 请求. 请求接口: https://api.weixin.qq.com/cgi-bin/menu/create?access_token=ACCESS_TO

node.js 下使用 wechat 开发微信接口

node.js 开发微信系列二 wechat 开发微信回调接口 上一篇我们介绍了 node.js下定时获取access_token 这里可能有个疑问,node.js 开发微信回调接口和定时获取 access_token 有关系吗? 其实没有必然的关系,通过微信回调接口我们可以方便的获取到交互者的 openid 但是,如果你想根据 openid 获取当前交互者的用户信息时,就必须要 access_token 了. 今天我们只谈 wechat 如何使用,获取用户详情在以后的博文中介绍. wechat 微信公共平台消息接口服务中间件 github地址: https://github.com/

node.js 微信开发 定时获取access_token

什么是access_token access_token是公众号的全局唯一票据,公众号调用各接口时都需使用access_token。开发者需要进行妥善保存。access_token的存储至少要保留512个字符空间。access_token的有效期目前为2个小时,需定时刷新,重复获取将导致上次获取的access_token失效 [来自微信文档] 当你的多个微信开发相关服务并存时,多个服务各自去获取 access_token ,最后导致其中一些服务会不能正常访问. 所以这种情况下,应该设置一个获取 access_token 的中控服务器. 因为 access_token 的有效期为 2个小时,

CentOS6.3 64位系统安装破解版 jira6.3.3

CentOS 64位系统安装破解 jira6.3.3 准备条件 1.安装java 环境 2.设置java 环境变量 3.安装数据库 4.下载jira 6.3 5.安装jira 6.3 6.申请临时授权码 7.汉化 8.下载破解版 atlassian-extras-2.2.2.jar 替换原组件 9.重启jira ,更新授权码 10.破解成功 1.安装java 环境 新版jira 需要jdk 1.8 以上版本支持. 我用的版本是 1.8.0_65 tar -zxvf jdk-8u65-linux-x64.tar.gz mkdir /usr/java mv jdk1.8.0_65

node.js 调用 shelljs 接收 stdin 输入输出

#node.js 调用 shell 脚本 现在能见到的有很多很多种方法 今天和大家分享的是 shelljs shelljs 安装 npm install shelljs --save shelljs 使用 exec 方法 var shell = require("shelljs"); // exec 方法 shell.exec("echo hello world!"); shelljs 使用全局模式 require('shelljs/global'); mkdir('-p', '/var/log'); cp('-R', '/var/log/*', '/home/zhang

mysql 彻底解决中文乱码的问题

mysql 中常常出现对中文支持不友好的情况 常见的错误 "Illegal mix of collations for operation" 下面我们规整一下 mysql 数据库中一共涉及到哪些字符集 character-set-server/default-character-set:服务器字符集,默认情况下所采用的 character-set-database:数据库字符集 character-set-table:数据库表字符集 一般情况下只需要设置character-set-server,而在创建数据库和表时不特别指定字符集,这样统一采用character-

mysql ,mongodb 针对坐标值按照距离远近排序

针对mysql 和 mongodb 不同数据库下坐标转换距离排序 mysql //坐标转换因子.是需要计算的. xFactor = cityObject.xFactor; yFactor = cityObject.yFactor; //地区坐标 latitude = location.latitude; longitude = location.longitude; //组合sql语句 let sql = [ 'SELECT *, ', ' sqrt(pow((latitude - ' + latitude + ') * ' + yFactor + ',2) + ', ' p

linux下查询端口是否被占用,杀掉进程关闭端口占用

概述 首先你必须知道,端口不是独立存在的,它是依附于进程的; 某个进程开启,那么它对应的端口就开启了,进程关闭,则该端口也就关闭了; 下次若某个进程再次开启,则相应的端口也再次开启; 而不要纯粹的理解为关闭掉某个端口,不过可以禁用某个端口. 查询端口 比如我们要查询 6379 端口 netstat -anp | grep 6379 [root@centos76 ~]# netstat -anp | grep 6379 tcp 0 0 172.16.60.111:6379 0.0.0.0:* LISTEN 2195/red

App质量管理优化方案 - 团队协作,流程控制

2016年5月27日,有幸被邀请参与云测主办的App质量管理优化方案 今天准备临时整理一下,分享出来 针对App开发过程中质量管理优化,一介布衣是以一个开发者的视角去看待整个流程,力求在需求开发,评审,研发,测试,发版等各个环节去控制自己的节奏,尽量避免在各团队衔接或者流程控制上影响app质量. #团队目标 如何在规定时间内开发出符合质量要求的产品 代码质量把关 代码review 作为一种纯手工创造性劳动,每个工程师去 review 一下自己的代码,并不是"秀",起码对方可以知道对方在干什么,而且还可以用自己的思维模式去判断对方的代码实现是不是最优,有没有改进的

搭建自己的邮件服务器(postfix devocot cyrus-sasl) centos7 系统下配置

网上用了很多家企业邮箱 免费的不好用,或者收费的价格太贵....那干脆自己搭建邮件服务器了. 搭建邮件服务器目前最流行的应该是 postfix + devocot 组件. 而系统自带的 sendmail 配置起来相当困难,所以我压根就没有去试.并且在安装前直接卸载了 sendmail . 第一步 设置域名MX 解析 首先要有指定 ip 的 A 记录解析 @ A 111.111.111.111 需要有 mail 二级域名的 A 记录解析 mail A 111.111.111.111 MX 记录解析 @ MX mail.yij

mongodb 创建用户 mongoose 指定用户连接数据库

说实话,之前玩 mongodb 都是裸奔,都不需要用户名和密码直接连接 mongodb. 但是,正在在使用 mongodb 来开发的时候,还是要设置一个专属的账号,密码来连接数据库. 如何在mongodb 中创建一个用户 Mac下使用 brew 安装mongodb 请点击左侧链接打开. shell 下连接 mongodb ➜ /Users/zhangzhi >mongo MongoDB shell version: 3.2.0 connecting to: test 默认连接到 test 数据库. 切换数据库到 admin > show databases admi

centOS 下搭建 phpmyAdmin 服务

很久没来了,最近太忙(当然是借口~~) 今天和大家分享如何安装使用 phpMyAdmin 服务来管理mysql数据库. 首先你需要安装mysql (废话) yum -y install mysql 下载 phpMyAdmin 比如 我们下载了 phpMyAdmin-4.0.4.1-all-languages.zip [root@mail ~]# unzip phpMyAdmin-4.0.4.1-all-languages.zip [root@mail ~]# mv phpMyAdmin-4.0.4.1-all-languages /var/www/html/ [root@mail ~

缓存的淘汰策略简介

常用缓存策略简介 常用的三种缓存淘汰(失效)算法:FIFO,LFU , LRU 缓存数据全部放在内存中,因此不可能无限制地添加数据。 假定我们设置缓存能够使用的内存大小为 N,那么在某一个时间点,添加了某一条缓存记录之后,占用内存超过了 N,这个时候就需要从缓存中移除一条或多条数据了。 那移除谁呢?我们肯定希望尽可能移除“没用”的数据,那如何判定数据“有用”还是“没用”呢? 1.1 FIFO(First In First Out) 先进先出,也就是淘汰缓存中最老(最早添加)的记录。 FIFO 认为,最早添加的记录,其不再被使用的可能性比刚添加的可能性大。 这种算法的实现也非常简单,创建一个队列

centOS 下升级php 5.3 到 5.4

在CentOS 系统下,把 php 5.3 升级到 5.4 版本 查看你的版本 [root@10-10-126-106 ~]# php -v PHP 5.4.45 (cli) (built: Oct 16 2015 11:02:47) Copyright (c) 1997-2014 The PHP Group Zend Engine v2.4.0, Copyright (c) 1998-2014 Zend Technologies 具体步骤 查看之前 php 版本: [root@localhost ~]# rpm -qa |grep php* php-5.3.3-46.el6_6.

ssh 超时问题改善方案

ssh连接超时问题解决方案: 修改server端的 etc/ssh/sshd_config 配置 ClientAliveInterval 7200 #server每隔7200秒发送一次请求给client,然后client响应,从而保持连接 ClientAliveCountMax 30 #server发出请求后,客户端没有响应得次数达到30,就自动断开连接,正常情况下,client不会不响应 重启配置: service sshd reload $TMOUT系统环境变量 配置 sudo nano /etc/profile 在最后一行增加 export TMOUT=1800(单位秒) 保存并

markdown基本语法介绍

Markdown是一种轻量级标记语言,创始人为約翰·格魯伯(英語:John Gruber)。 它允许人们使用易读易写的纯文本格式编写文档,然后转换成有效的XHTML(或者HTML)文档。 这种语言吸收了很多在电子邮件中已有的纯文本标记的特性。[维基百科] markdown可以让你专心写作而摆脱排版的困扰. 一些常用语法要花几分钟时间来记住. 标题 一个#表示一级标题, 几个#号对应表示几级标题, 最多支持六级标题. 注:标准语法一般在#后跟个空格再写文字 # 一级标题 ## 二级标题 ### 三级标题 #### 四级标题 ##### 五级标题 ###### 六级标题 效果: 一级标题

sed 按日期过滤 nginx log 日志

针对 Linux 系统下 nginx 访问日志查询. 我们常常会直接上服务器使用 cat ,head , tail 等命令来查看. 但是面对几个G ,甚至几十个G 的log日志文件时,你想定位到多少行到多少行,谈何容易! 所以,今天和大家分享一个按日期提取 log 日志的方法. sed 命令简介 sed全名叫stream editor,流编辑器,用程序的方式来编辑文本,基本上就是玩正则模式匹配,相当的hacker. sed 参数简介 -n :使用安静(silent)模式。在一般 sed 的用法中,所有来自 STDIN 的数据一般都会被列出到终端上。但如果加上 -n 参数后,则只有经过

通过 find 这终端查找文件

find命令搜索文件 find命令非常高效,并且使用简单. find命令来自unix,OS X和Linux系统同样支持该命令. find命令格式: ** find 文件路径 参数** 这用户目录下查找 查找文件名中包含 redis.conf 的文件 find ~ -name "redis.conf*" -name 是指定参数 redis.conf* *号匹配任意字符,说明以 redis.conf 开头的文件 指定文件目录下查找 在特定的文件夹中寻找特定的文件,比如 这 / 目录下查找 redis.conf开头的文件 find ~ -name "redis.conf*" m

JavaScript 代码规范与约束

在开发过程中,团队代码风格统一,会让我妈避免不必要的错误和低级 Bug、控制代码质量,这样我们最好会预定一套编码规范. 检验JavaScript编码规范的工具有哪些? jslint jshint ESLint 下面简单看下这3个检验工具之间的差别: jslint jslint 的作者是 Douglas Crockford(《JavaScript: The Good Parts》的作者)。 Douglas Crockford 制订了一套 JavaScript 编码规则, JSLint 通过检查和分析 JavaScript 代码, 将任何违反规则的代码警告给开发者, 且无法通过配置关闭一

请珍惜优秀的免费资源,守住自己的道德底线.

为了发这篇文章,我挣扎了好久,至少2年前我就想分享一篇关于vpn的文章,最后咬咬牙,跺跺脚忍了. 最近,一位朋友真好也遇到vpn连接的一些不如意, 借着新年之际,我非常想分享下如何免费给自己搭建一个vpn, 让需要跨栏的人顺利看看外面的世界. 我迟疑了很久,该不该发这样的文章, 一旦发出去,很多优秀免费资源马上会被滥用,直接的原因就是关停,谁都用不成. 内心的挣扎,我最后还是说服了自己,我觉得来我博客的应该都是各类攻城狮, 退一万步讲,大不了年后我删除了这篇文章. 所以,标题,标签,配图 我开始很详细的写一篇如何一步一步搭建. 大概完成40% 的时候,我感觉这篇文章还是不要发出去好, 为

npm 不加sudo 执行失败

随笔记录一个小问题, npm 安装开源包的时候,你可能碰到这样的情况,无写入权限. ***必须加上 sudo *** 才能执行成功. 无 sudo ➜ /Users/zhangzhi >npm install -g jslint npm ERR! tar.unpack untar error /Users/zhangzhi/.npm/jslint/0.9.6/package.tgz npm ERR! Darwin 15.3.0 npm ERR! argv "/usr/local/bin/node" "/usr/local/bin/npm" "install" "-g" "jsli

回到顶部