前言 在面向对象语言中,我们很容易理解对象及对象的实例,
但是sequelize ORM框架中我们通常会说成模型和实例.
模型可以理解为对一个表结构的抽象定义,好比工厂的一条流水线,
实例可以理解为表结构中一个具体的数据结构,好比流水线生产出来的一个商品.
在sequelize 类中有一些api是针对实例操作 (可以理解成内存中的改变)
实例持久化以后,数据才写入我们物理存储单元中 (比如具体的数据库)
新建实例并持久化 定义模型 const Task = sequelize.define('task', {
title: Sequelize.STRING,
rating: { type
2020-03-27
5325
javascript
查看更多
查询操作符 Sequelize提供了一整套查询操作符,下面分别列出来看下
比较操作符 const Op = Sequelize.Op
[Op.and]: {a: 5} // AND (a = 5)
[Op.or]: [{a: 5}, {a: 6}] // (a = 5 OR a = 6)
[Op.gt]: 6, // > 6
[Op.gte]: 6, // >= 6
[Op.lt]: 10, // < 10
[Op.lte]: 10, //
2020-03-26
8523
javascript
查看更多
前言 最近把代码进行升级,原来旧版本的Sequelize 也一下升级的V5.0版本,
为了学习使用方便,统一把 Sequelize 5.0 更新,移除,替换,升级的内容标记一下.
对node的支持 Sequelize v5 将仅支持 Node 6 以及更高版本
安全的运算符 在 v4 中,就开始收到弃用警告 String based operators are now deprecated (基于字符串的运算符现在已弃用).
同时也介绍了运算符的概念.这些运算符是一些防止散列注入攻击的符号.
在V5 版本中,运算符默认启用.
你仍然可以通过在 operatorsAliases 中传递一个运算
2020-03-26
5269
javascript
查看更多
前言 在使用sequelize ORM框架时一定要先创建模型对象.
对象模型对应的就是数据库中表,字段及字段类型等的定义.
我们一般的做法是先在nodejs中将对象创建出来,然后调用Sequelize的同步方法,将数据库自动创建出来.
这样就避免了既要写代码建表,又要手工创建数据库中的表的操作.
只需要单独考虑代码中的对象类型等属性就好了.
如果数据库中已经建好了表,并且不能删除,这个时候就不能自动创建了,因为创建的时候会删除掉旧的数据
定义模型
名称类型说明
modelNameString模型名,在sequelize.models属性中会使用这个名称;
如果没有在options中指定
2020-02-28
6222
javascript
查看更多
前言 vscode优势强劲,让各种技术栈同学爱不释手,不仅仅是IDE足够优秀,而且他的生态也非常丰富,各种各样的插件让你武装到牙齿.
今天推荐的2款插件本人都在用.
koroFileHeader
文件头部加注释
光标处添加函数注释
文件头部加注释 文件头部注释在你创建文件自动添加,
如果是老文件,保存时自动添加更新记录.
/*
* @Author: zhangzhi
* @Date: 2019-07-11 13:40:28
* @LastEditTime: 07-11 17:15:57
* @LastEditors: zhangzhi
* @Description: In User Set
2019-07-11
4065
javascript
查看更多
vue 和 react 的相同点 1.他们都是JavaScript的框架,专注于创造前端的富应用
2.不同于早期的JavaScript框架“功能齐全”,React与Vue只有框架的骨架,其他的功能如路由、状态管理等是框架分离的组件。
3.Vue.js(2.0版本)与React的其中最大一个相似之处,就是他们都使用了一种叫’Virtual DOM’的东西都鼓励组件化
4.看到React和Vue都有’props’的概念,这是properties的简写。props在组件中是一个特殊的属性,允许父组件往子组件传送数据。
5.React和Vue都有自己的构建工具,你可以使用它快速搭建开发环境
6.Re
2019-06-28
1774
vue
查看更多
go 语言命名 go 语言不像java 等传统面向对象语言一样有访问修饰符;
它是从语法层面做了限定:
想要对外暴露的名字必须大写字母开头 [类似 public 修饰符]
不想对外暴露的名字必须小写字母开头 [对其他包不可见,类似私有变量]
包名称命名规则 取名要有意义,不与标准库冲突;
包名与目录名一致;
包名要使用小写开头的单词;
不混合大小写或者下划线等;
如:
package yijiebuyi
文件命名规则 取名要简短,有意义;
小写单词打头;
多个单词使用下划线分隔;
blog_content.go
结构体命名规则 驼峰命名法.
至于大驼峰还是小驼峰取决于该结构体是否要向
2019-03-19
2406
go
查看更多
什么是mvvm模式 m => model 模型 ,也就是数据
v => view 视图, 也就是页面dom
vm => view and model ,这可以理解成我们常说的 双向绑定, 视图可以影响数据(v -> m) ,数据也可以影响视图 (m -> v)
所以我们可以很明显的看到mvvm的特性 数据双向绑定
react 是什么 react 本身只是一个函数,
ui = render(data)
一个 dom 拼接工具,把数据拼成新 dom 替换旧 dom .
这样看来 react 只有视图,连状态都不存在,更不会有双向数据绑定.
react 结合状态管理
2018-01-10
2520
react
查看更多
前面一系列介绍 Sails 框架学习
今天和大家分享 Sails 框架下模型自带的方法
1 . create(),
update(),
destroy(),
find(),
findOne(),
destroy(),
findOrCreate()
count(),
create() 创建记录 TestUser.create({name:'yijiebuy', email:'admin@yijiebuyi.com', gender:'male', age: '30'}, function(err, model){
});
创建一条新纪录后,回调函数
2016-09-06
8965
nodejs
查看更多
上一篇是关于 sails 定义模型models 属性字段定义类型
这一篇和大家分享关于 sails 的 orm框架 WaterLine 在与数据库操作过程中的生命周期控制.
生命周期
WaterLine 在执行过程中的生命周期可以简单的理解为:
调用前干什么
调用中.....
调用后干什么
具体有哪些操作会执行上面的生命周期
创建 create
创建记录时生命周期依次执行下面几个步骤:
验证模型数据之前..
验证模型数据之后..
创建记录之前..
创建记录之后..
beforeValidate: fn(values, callback)
afterValidate: fn(values
2016-09-05
6463
nodejs
查看更多
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
2016-09-02
7212
nodejs
查看更多
之前有一篇简单介绍了 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
2016-09-01
11381
nodejs
查看更多
上一篇介绍了 使用sails框架快速搭建项目
今天和大家分享 sails 另外一个重要的功能模块:
sails的ORM实现 什么是ORM
Java 中的 Hibernate 框架的一个重要功能便是将数据库中的数据与 Java 中的对象进行映射,被称为 ORM (Object Relational Mapping),
Node.js 里常用的 Mongoose ,便是将 MongoDB 的文档,映射为 JavaScript 的对象,
而 Waterline 可以看做是一个支持多种数据库的 Mongoose ,使得可以用一样的代码来实现对多种数据库的操作,无论是关系数据库还是文档数据库,都可
2016-08-25
9734
nodejs
查看更多
什么是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 框架
2016-08-23
16663
nodejs
查看更多
sails安装
npm install -g sails
sails创建新项目
sails new test
sails目录结构
test api
controllers(控制器相关,业务逻辑)
models(模块开发)
policies(用于路由过滤)
responses(定制所需的响应:如404 res.notFound())
services(定制一些常用的工具类–全局的)
assets(静态资源文件)
images
js
styles
templates
favicon.ico
config(整个
2016-01-31
7495
javascript
查看更多
如何把自己写的 node.js 模块发布到 npm 开源社区
有下面几个前提条件:
你需要是 npm 社区注册的会员
如果你还没有,点击下面的链接注册
https://www.npmjs.com/
你的开发环境需要 安装node.js 和 npm 创建repository
接下来我们需要创建module所需的repository,默认你拥有一个github账号(如果没有自行解决),这个repository用来托管我们module的代码,并方便用户报告bug,最重要的是可以让其他开发者向module贡献代码,这也是乐趣所在。
初始化package.json
接下来我们创建pa
2015-11-14
7928
nodejs
查看更多
Angular.js 中的特性,双向绑定.
多么神奇的功能,让视图的改变直接反应到数据中,数据的改变又实时的通知到视图,如何做到的?
这要归功于 scope 下面3个重要的方法:
$watch
$digest
$apply
他们的区别是什么,我们来介绍下:
$watch
这是一个监听 scope 上数据的监听器
方法说明:
$scope.$watch('参数',function(newValue,oldValue){
//逻辑处理
})
上面我们就是创建了一个监听器.
'参数' 就是$scope对象下的一个对象(或者一个对象的属性),注意,这里是字符串形式.
假如你
2015-10-12
9129
angularjs
查看更多
之前有一篇介绍PostgreSQL在MAC环境下的初体验 ,今天要和大家分享的是 node.js 应用 + PostgreSQL 做数据存储的demo.node.js 环境使用 PostgreSQL 需要下载编译node-postgresgithub地址:https://github.com/brianc/node-postgres 使用:zhangzhi@moke:npminstall--savepgREADME.md 关于如何使用的api 也比较简单:varpg=require('pg');
varconString="postgres://username:pa
2015-05-26
30804
PostgreSQL
查看更多
很多web服务面对的不仅仅是当地用户,多语言环境不仅能提升逼格,更重要是一种用户体验.angular.js 作为前后端拆分的解决方案之一,当然离不开前端框架处理国际化的问题,angular.js 官方出了一个模块 angular-translate 来解决多语言国际化问题.我们前端采用 bower 包管理工具来管理依赖,点击链接查看bower 使用方法,这里不再详细说明.上面列出的3个模块我们都要用到,一会详细说明:今天和大家分享的内容目录:使用angular-translate 模块的前期准备工作创建过滤器做html页面内容的国际化创建服务做javascript 脚本里的内容国际化使用 an
2015-04-23
62817
angularjs
查看更多
一些零散的点,如果读的时候自己能串起来就更好了.1.angular.js 作为后起之秀的前端mvc框架,他于传统的前端框架都不同,我们再也不需要在html中嵌入脚本来操作对象了.它抽象出了数据模型,控制器及视图.成功解耦了应用逻辑,数据模型,视图.2.它的视图也不是后台统一替换后渲染页面,而是视图被动态实时替换.视图上可以通过指定的 angular.js 指令来绑定模型数据.模型数据的变化又会直接影响视图的变化.3.控制器就像一座桥梁,负责连接模型和视图, 模型里包括数据和与数据进行交互的方法.视图只负责把模型数据的映射显示给用户.4.angular.js 会记录数据模型中的数据在任意时间点的
2015-04-20
6972
angularjs
查看更多
此篇博文其实是上一篇的一个小细节,单独拿出来说一下,否则上一篇叉开的分支太多,太乱.因为上一篇和大家分享了node.js 中使用util.inherits实现继承 我们单独给出一个小demo ,_base.js 父类继承了 events.EventEmitter 类.varevents=require('events');
varutil=require('util');
function_base(){
this.emitter=newevents.EventEmitter(this);
};
util.inherits(_base,events.Even
2015-03-29
7323
javascript
查看更多
events 是node.js的核心api ,几乎大部分node.js 的api都继承 events 类(javascript中没有类,也不存在继承,确切说是模拟类和继承,点击查看)比如我们常见的 http , stream ,fs .....等等.因为node.js的实现就是异步非阻塞io,通过事件轮询触发异步回调的机制,在单线程运行模式下,合理应用服务器资源才是制胜法宝,正是因为事件轮询才使得异步IO在高并发处理下游刃有余,所以大部分的包去继承 events 似乎合情合理.下面我们可以看一个常见的事件处理,但是我们用的时候似乎并没有当回事:varreq=http.request(param
2015-03-26
14789
nodejs
查看更多
angular.js 是新一代web开发框架,它轻松在web前端实现了MVC模式,相比 jquery 模式,这种新玩意竟然不需要开发者直接去操作dom .作为前端开发而不去操作dom ,这简直是一个玩笑! 没错,确实是这样的.关于 angular.js 的详细说明及事例请在博客搜索 angular.js既然上面提到 angular.js 下无需用户直接操作dom ,而是在编译间断 dom 与 控制层model 实现了双向绑定,一方做出改变,另一方就会立即改变,那问题来了,我想插入一个文本框和按钮,并且文本框里数据要和控制层一个属性绑定,按钮要实现 ng-click 事件,如何做?传统实现方法,
2015-03-18
43750
angularjs
查看更多
在写node.js引用的时候,常常面临下面的一个困扰...不论是数据层,逻辑层,添加一个js文件或者暴露一个方法,当你想用的时候,在目标页必须 request 此文件才能使用被暴露的方法.我们是不是可以写一个方法,自动加载某个指定文件夹下的js文件呢?答案是肯定的.这样的好处:我只需要引用这个装载文件后(自动加载目录js 的代码文件) 以后随便你添加方法或者文件,都不影响之前的代码,从而就可以直接使用,是不是很爽....下面来完成这个一劳永逸的代码文件.varfs=require('fs');
var path = __dirname;
var self = __filenam
2015-03-09
13810
nodejs
查看更多
上一篇我们搭建了一个前端 angular.js 后端 node.js服务器的单页面应用,虽然目前服务端只有一个启动文件,但是后面的系列涉及到服务器端交互的时候会逐渐补充.我们整个系列的学习会去写一个简单blog雏形,如果有精力再完善美化.但是这篇还是要从HelloWorld开始学习.angular.js 文件加载我们选用 bootstrap中文网提供的一个cdn服务.http://www.bootcdn.cn/我们找到 1.3.8的angular.js cdn地址,引用到页面 index.html中http://cdn.bootcss.com/angular.js/1.3.8/angular.
2015-01-27
5611
angularjs
查看更多
angular.js学习系列为后续的学习,我们需要搭一个 angular.js 学习环境.服务器端 api 使用 node.js 提供客户端由 angular.js 来负责.然后整个框架中使用 glup 代码构建工具来处理一些任务,关于 glup 的使用会单独开一篇博客.参考上图,下面有文档描述说明,几个* 表示几级目录*Client 文件夹下都是前端部分. **index.html — 站点启动页面,如果你把angular.js理解成一个单页面应用,它就是那个单独的页面 **images — 放置图片**styles—放置样式**templates —放置视图模板**vender—放置
2015-01-24
8653
angularjs
查看更多
angular.js快速开始在这一步你会增加一个让用户控制手机列表显示顺序的特性。动态排序可以这样实现,添加一个新的模型属性,把它和迭代器集成起来,然后让数据绑定完成剩下的事情。请重置工作目录:git checkout -f step-4你应该发现除了搜索框之外,你的应用多了一个下来菜单,它可以允许控制电话排列的顺序。步骤3和步骤4之间最重要的不同在下面列出。你可以在GitHub里看到完整的差别。模板app/index.htmlSearch:<inputng-model="query">
Sortby:
<selectng-model="orde
2014-12-11
4940
nodejs
查看更多
我们的应用现在有了一个搜索框。注意到页面上的手机列表随着用户在搜索框中的输入而变化。步骤2和步骤3之间最重要的不同在下面列出。你可以在GitHub里看到完整的差别。控制器我们对控制器不做任何修改。模板app/index.html<divclass="container-fluid">
<divclass="row-fluid">
<divclass="span2">
<!--Sidebarcontent-->
Search: <input ng-model="
2014-11-29
7537
angularjs
查看更多
引用自:https://cnodejs.org/topic/5206581b44e76d216aae072e之前已经有朋友总结了mongoose的一些内容,推荐他的文章,包含了主干部分,这是接着后面写的。接下来是翻译自mongoose guide#Queries文件可以通过一些静态辅助模型的方法检索。任何涉及 指定 查询 条件的模型方法,有两种执行的方式:当一个回调函数:被传递,将立即执行的操作结果传递给回调。未被传递,返回一个查询的实例,它为您提供了一个特殊的QueryBuilder接口。让我们来看看在传递一个回调时会发生什么:varPerson=mongoose.model('Pe
2014-11-26
11917
mongodb
查看更多
Angular学习之旅,从Hello World开始开始学习AngularJS的一个好方法是创建经典应用程序“Hello World!”:使用您喜爱的文本编辑器,创建一个HTML文件,例如:helloworld.html。将下面的源代码复制到您的HTML文件。在web浏览器中打开这个HTML文件。源代码<!doctype html><html ng-app> <head> <script src="http://code.angularjs.org/angular-1.0.1.min.js"></script&g
2014-11-08
6215
javascript
查看更多