sequelize 5.0中文文档 对象实例操作与数据持久化 (五) - node.js语言最好用的orm

前言 在面向对象语言中,我们很容易理解对象及对象的实例, 但是sequelize ORM框架中我们通常会说成模型和实例. 模型可以理解为对一个表结构的抽象定义,好比工厂的一条流水线, 实例可以理解为表结构中一个具体的数据结构,好比流水线生产出来的一个商品. 在sequelize 类中有一些api是针对实例操作 (可以理解成内存中的改变) 实例持久化以后,数据才写入我们物理存储单元中 (比如具体的数据库) 新建实例并持久化 定义模型 const Task = sequelize.define('task', { title: Sequelize.STRING, rating: { type

sequelize 5.0中文文档 5.0版本中升级,替换,移除的内容 (四) - node.js语言最好用的orm

前言 最近把代码进行升级,原来旧版本的Sequelize 也一下升级的V5.0版本, 为了学习使用方便,统一把 Sequelize 5.0 更新,移除,替换,升级的内容标记一下. 对node的支持 Sequelize v5 将仅支持 Node 6 以及更高版本 安全的运算符 在 v4 中,就开始收到弃用警告 String based operators are now deprecated (基于字符串的运算符现在已弃用). 同时也介绍了运算符的概念.这些运算符是一些防止散列注入攻击的符号. 在V5 版本中,运算符默认启用. 你仍然可以通过在 operatorsAliases 中传递一个运算

sequelize 5.0中文文档 定义模型define model和验证 (二) - node.js语言最好用的orm

前言 在使用sequelize ORM框架时一定要先创建模型对象. 对象模型对应的就是数据库中表,字段及字段类型等的定义. 我们一般的做法是先在nodejs中将对象创建出来,然后调用Sequelize的同步方法,将数据库自动创建出来. 这样就避免了既要写代码建表,又要手工创建数据库中的表的操作. 只需要单独考虑代码中的对象类型等属性就好了. 如果数据库中已经建好了表,并且不能删除,这个时候就不能自动创建了,因为创建的时候会删除掉旧的数据 定义模型 名称类型说明 modelNameString模型名,在sequelize.models属性中会使用这个名称; 如果没有在options中指定

sequelize 5.0中文文档连接数据源及数据类型 (一) - node.js语言最好用的orm

前言 Node.js 社区中,sequelize 应该是最好用的 ORM 框架,它支持多种数据库,包括 PostgreSQL ,MySQL ,SQLite 和 MSSQL. 安装 npm install --save sequelize 在你的项目中使用了哪种数据源,那么对应的去安装此数据源的驱动程序: $ npm install --save pg pg-hstore # PostgreSQL $ npm install --save mysql2 # MySQL $ npm install --save mariadb # Mariadb (mysql的孪生兄弟) $ n

levelup 4.x版本升级node.js下leveldb数据库对照文档

levelup 是一个由谷歌构建的简单 key-value 数据库. 它在 Google Chrome 和许多其他产品中使用,使用 fast Snappy算法,可以将任意字节数组作为键和值. leveldown 它提供了一个纯 C++ 绑定到 LevelDB. 在浏览器或者 memdown 中,有许多可选存储( 如 level.js ),用于内存存储中的. 它们通常支持键和值的字符串和缓冲区. 对于更丰富的数据类型集,可以用 encoding-down 包装存储. level 它可以看做是包的一个集合,捆绑了 levelup , leveldown 和 encoding-down. 它的

vue项目打包发布线上环境

说明 发现一些朋友在群里询问如何线上发布vue项目. 从而暴露出来很多有意思的问题. 所以这篇博文简单介绍一下vue项目线上发布的情况. 本地环境 mac os node 10.16 vue 2.6 vue-cli 4.0 线上环境 centOS6 node 10.16 nginx vue是最近很火的前端框架, 所以它依赖的是浏览器,及我们可以从浏览器定位到你服务器nginx,然后nginx把指定的静态资源转发出来,最后我们在浏览器渲染看到 不管你的服务器是iis,apache还是nginx 只要http可以定位到服务器的静态资源即可. 很多人会有问号? 那为什么我在开发的时候用node命令

推荐一个极简社会化分享插件basicShare

basicShare 推荐一款极简的分享插件 之前用过百度分享,后来博客切换https服务后, 百度分享插件加载报错, 再加上目前主流的社会化分享目的地也就是 微信,微博, 或许是80后的我真的out了, 这个插件基本满足我的需要 极致简洁 UI效果 截图展示效果有点大.... 看看实际效果: 分享 站点没有下载icon,所以前面的分享icon变成了方框□ css .basicShareBtn { cursor: pointer; background-color: #dff0d8; border-color: #d6e9c6; color: green; font-size: 1

axios中文使用文档说明

关于axios axios 是一个基于 promise 的 HTTP 库,可以用在浏览器和 node.js. 主要功能 从浏览器中创建 XMLHttpRequests 从 node.js 创建 http 请求 支持 Promise API 拦截请求和响应 转换请求数据和响应数据 取消请求 自动转换 JSON 数据 客户端支持防御 XSRF 浏览器支持 使用 浏览器端 直接引用: <script src="https://unpkg.com/axios/dist/axios.min.js"></script> 使用 bower: bower ins

vscode 高效率插件koroFileHeader注释辅助和GitLens代码追踪

前言 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

javascript字符串转化成数字的几种方法

前言 javascript因为他的不完美, 导致了字符串可以有好几种转化为数字的方法, 但是可用的方法越多,留下的坑也就比较多. parseInt 几乎所有浏览器都能解析处理此方法. console.log(parseInt('001一介布衣'); //有些老旧浏览器会返回 0 //现代浏览器会返回 1 此方法优点: ** 处理速度最快** Number Number 几乎所有浏览器都支持解析, 但是它针对参数是否有引号会做出不同的解析. console.log(Number('0028')); 输出:28 console.log(Number(023)); 输出:19 当 Numbe

centOS用shell脚本定时备份mongodb并清理历史备份版本

前言 备份数据库是运维同志的日常工作之一, 但是对于中小公司,或者服务器托管在云服务商的公司来说,基本没有专业的运维工程师. 所以一部分公司中,开发工程师就要分担一些运维的事情. 我们本着能让计算机做的事情绝对不动手原则, 今天就和大家分享一下 centOS下定时自动备份mongodb数据库,并且清理历史备份记录. centOS安装crontab 如果你的系统已经安装,请直接跳过此步骤. [root@CentOS ~]# yum install vixie-cron [root@CentOS ~]# yum install crontabs 说明 vixie-cron软件包是cron的主程

javascript 跨域的几种情况

JavaScript 中的跨域问题 http://yijiebuyi.com/A.js http://yijiebuyi.com/B.js 上面情况在同一域名下,不同资源文件 [允许跨域] http://yijiebuyi.com/blog/A.js http://yijiebuyi.com/jobs/B.js 上面情况在同一域名下,不同资源目录下的文件 [允许跨域] http://yijiebuyi.com/A.js http://yijiebuyi.com:1234/B.js 上面情况在同一域名下,不同端口 [不允许跨域] http://yijiebuyi.co

JavaScript 代码规范与约束

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

node.js Sails 学习文档 model 篇

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(整个

ES6 新增了哪些新特性 (二)

关于 ES6规范及新特性 对象字面量申明增强 ES6 之前,申明对象字面量方式其实就是直接定义一个json对象.存在的仅仅是对象的属性和值. ES6 之后,对象字面量被扩展支持直接设置原型, 简洁属性赋值和方法, 超类调用, 这也让对象字面量和类声明的关系更密切,并让基于对象的设计更便利 ES6之前: var obj = { __proto__: theProtoObj, // 下面的写法不会设置内部原型 '__proto__': theProtoObj, // 方法 toString() { // 调用父对象的方法 return "d "

ES6 新增了哪些新特性 (一)

ES6是对 javascript 语言的一次重大更新,是自从2009年ES5标准化后的第一次重大更新 主要的JavaScript引擎正在逐步实现这些特性,点击这里查看浏览器的兼容情况 这次更新涉及到的新特性还比较多,我们分几个部分来简单介绍 ES6 中模块导入 类似下面的语法: import fs from 'fs'; import path from 'path'; 这里的 import是在编译时决定的( 即在脚本开始执行之前 ) 事实上,各个模块之间的依赖关系图所涉及的所有imports和exports都是在执行之前已经决定 如果我们的代码中需要按需加载的需求,即在运行时才进行模

React 学习 JSX语法与原生HTML

JSX 可以看作JavaScript的拓展,看起来有点像XML。 使用React,可以进行JSX语法到JavaScript的转换。 为什么使用JSX 使用React,不一定非要使用JSX语法,可以使用原生的JS进行开发。但是React作者强烈建议我们使用JSX,因为JSX在定义类似HTML这种树形结构时,十分的简单明了。简明的代码结构更利于开发和维护。 XML有着开闭标签,在构建复杂的树形结构时,比函数调用和对象字面量更易读。看个直接的对比: //使用JSX React.render( <div> <div>

CommonJS 是什么 规范

概述 CommonJS是服务器端模块的规范,Node.js采用了这个规范。 根据CommonJS规范,一个单独的文件就是一个模块。 加载模块使用require方法,该方法读取一个文件并执行,最后返回文件内部的exports对象。下面就是一个简单的模块文件example.js。 console.log("evaluating example.js"); var invisible = function () { console.log("invisible"); } exports.message = "hi"; exports.say = function () { c

webpack 前端加载工具 让 浏览器端 javascript 执行 CommonJS规范

#为什么用webpack 如果我们 前端 javascript 能像 node.js 一样 require 去引用一个依赖包,那么前端的世界就不会像现在这么乱 现在为什么乱? 假设: a.js 依赖 b.js b.js 依赖 c.js c.js 依赖 d.js 如果在我们前端去引用这些依赖的时候,往往是这样的: <script src='a.js'></script> <script src='b.js'></script> <script src='c.js'></script> <scri

javascript 动态加载按顺序加载运行 js

javascript 在浏览器中的加载是如何的? 如何你的 script 上没有任何 异步,阻塞 等标注: 浏览器会异步加载 javascript 文件,但是会按照引用文件中的书写顺序从上到下执行解析 javascript Defer属性标记 defer是html4.0中定义的,该属性使得浏览器能延迟脚本的执行,等文档完成解析完成后会按照他们在文档出现顺序再去下载解析。 也就是说defer属性的 script 就类似于将 script 放在body中的加载 效果一致. 但是defer属性在各个浏览器中支持程度有点不同,就是说,有的浏览器不完全支持. Async属性标注 as

react 组件生命周期 相关事件 方法

一般来说, React 组件是一个组件类由 extends Component 创建,并且提供一个 render 方法以及其他可选的生命周期函数、组件相关的事件或方法来定义。 一个简单的例子: import React, { Component } from 'react'; import { render } from 'react-dom'; class LikeButton extends Component { getInitialState() { return { liked: false }; } handleClick(e) { this.

React Native 学习 如何使用 style 样式

关于 React Native 学习 系列之如何定义css 样式 样式 React Native 不实现 CSS,而是依赖于 JavaScript 来为你的应用程序设置样式。这是一个有争议的决定,你可以阅读那些幻灯片,了解背后的基本原理。 声明样式 在 React Native 中声明样式的方法如下: var styles = StyleSheet.create({ base: { width: 38, height: 38, }, background: { backgroundColor: '#222222', }, active:

React 理解 及 与其它框架区别

在 React 下,我们需要考虑的,是每个组件在任意一个状态下应该怎么渲染。 (状态就是数据) React 会把这些组件装配成页面。 然后当数据更新后, React 又把新数据传给组件,于是又根据新数据重新渲染 React 把重新渲染的结果和之前渲染的结果进行比对,找出需要更新的部分,进行更新。 我们只需要正确的更新数据/状态,不必再在渲染时考虑数据发生了什么变化(例如是增加了一条记录还是减少了一条记录?增加到什么位置?不需要考虑这些也就不需要考虑我们在进行 DOM 操作时插入到哪里等问题)。 我们只需要指定好规则(即给出任意一种状态,这个组件应该怎么渲染),并正确的更新状态,这些

JSX 语法使用

利用 JSX 编写 DOM 结构,可以用原生的 HTML 标签,也可以直接像普通标签一样引用 React 组件。这两者约定通过大小写来区分,小写的字符串是 HTML 标签,大写开头的变量是 React 组件。 使用 HTML 标签: import React from 'react'; import { render } from 'react-dom'; var myDivElement = <div className="foo" />; render(myDivElement, document.getElementById('mountNode')); HTML 里

JSX 语法了解,我们为什么要学习它

传统的 MVC 是将模板放在其他地方,比如 script 标签或者模板文件,再在 JS 中通过某种手段引用模板。按照这种思路,想想多少次我们面对四处分散的模板片段不知所措?纠结模板引擎,纠结模板存放位置,纠结如何引用模板……下面是一段 React 官方的看法: We strongly believe that components are the right way to separate concerns rather than "templates" and "display logic." We think that markup and

JSX语法及学习

JSX 是 Javascript 代码里直接写XML的语法 JSX (Javascript XML syntax transform) 是使用XML语法编写Javascript的一套解析工具; X代表XML;也可以理解为扩展(eXtension),因为实现JSX功能本身就是使用Javascript; React建议使用JSX(但非必要) 实质上这只是一个语法糖,每一个XML标签都会被JSX转换工具转换成纯Javascript代码 React 官方推荐使用JSX, 当然你想直接使用纯Javascript代码写也是可以的,只是使用JSX,组件的结构和组件之间的关系看上去更加清晰

lodash underscore 对象数组排序 sortBy 小记

关于 lodash 和 underscore 的对比看这篇帖子 今天分享一个关于 lodash 的排序小方法 _.sortBy([1, 2, 3], function(n) { return Math.sin(n); }); 上面是官方示例 默认排序方式是正序排列 如果你的数组是一个对象组合 var arr= [ {"key":"key1","value":"value1","createTime":"124573216"}, {"key":"key2","value":"value2","createTime":"124593216"}, {"key":"key3","va

redis 如何处理客户端连接

redis如何处理客户端连接 redis 连接建立 Redis Redis 通过监听一个 TCP 端口或者 Unix socket 的方式来接收来自客户端的连接,当一个连接建立后,Redis 内部会进行以下一些操作: 首先,客户端 socket 会被设置为非阻塞模式,因为 Redis 在网络事件处理上采用的是非阻塞多路复用模型。 然后为这个socket 设置 TCP_NODELAY 属性,禁用 Nagle 算法 然后创建一个 readable 的文件事件用于监听这个客户端 socket 的数据发送 当客户端连接被初始化后, 会查看目前的连接数,然后对比配置好的 maxclients

回到顶部