用nodejs做网站 - 5

news/2024/4/29 10:59:55/文章来源:https://blog.csdn.net/weixin_33788244/article/details/89370043

数据库

传统建表就是直接用SQL写出来,在数据库中执行。但我不是很擅长这种事,于是我找了工具帮我处理。

Knex http://knexjs.org/

Knex.js is a "batteries included" SQL query builder for Postgres, MSSQL, MySQL, MariaDB, SQLite3, and Oracle designed to be flexible, portable, and fun to use.

首先让我们在项目中和全局都安装knex。因为我们用的是mysql,所以mysql的模块也要安装。

➜ npm install knex --save
➜ npm install knex -g
➜ npm install mysql --save

装好之后,别忘了检查一下。

➜ knex --version
Knex CLI version:  0.11.7
Local Knex version:  0.11.7

初次使用的时候,可以用命令行创建一个配置文件。创建在项目的根目录中。

➜ knex init
Created ./knexfile.js

这个是创建knexfile.js里的默认内容。

// Update with your config settings.module.exports = {development: {client: 'sqlite3',connection: {filename: './dev.sqlite3'}},staging: {client: 'postgresql',connection: {database: 'my_db',user:     'username',password: 'password'},pool: {min: 2,max: 10},migrations: {tableName: 'knex_migrations'}},production: {client: 'postgresql',connection: {database: 'my_db',user:     'username',password: 'password'},pool: {min: 2,max: 10},migrations: {tableName: 'knex_migrations'}}};

我们之前写了一个config.js,里面就包含了数据库的设置。这个时候就需要我们合并一下了,合并之后就是下面这个样子了。

这当中使用了lodash这个库,这个库就是一个工具库。其中有很多的函数可以直接用,很方便。

https://lodash.com/

A modern JavaScript utility library delivering modularity, performance, & extras.

var config = require('./config');
var _ = require('lodash');var baseConfig = {migrations: {directory: './db/migrations'}
}module.exports = {development: _.extend(config.development.database, baseConfig),staging    : _.extend(config.staging.database, baseConfig),production : _.extend(config.production.database, baseConfig)
};

我们第一次做的更新就是创建users表,用于存储用户的信息。我们在knex的配置文件中设定了migrations的目录,所以直接生成在了那个个目录当中。

➜ knex migrate:make add-user
Using environment: development
Created Migration: /Users/limi/website/db/migrations/20160719121550_add-user.js

刚生成完,里面是什么都没有的。生成表的代码我们就写在这个地方,里面定义了更新和回滚的操作,分别放在up和down中。我们顺便在up中给users表插入了一条数据。

这里面用到了Promise,如果你不了解的话可以参考以下。

  • http://caniuse.com/#search=promise

  • https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise

  • https://www.promisejs.org/

  • http://caniuse.com/#search=promise

exports.up = function(knex, Promise) {return Promise.all([// 创建表knex.schema.createTableIfNotExists('users', function (table) {table.increments('id').primary().notNullable();table.string('name').notNullable();table.string('password').notNullable();table.string('email').notNullable();table.string('uuid').notNullable();table.string('status').notNullable().defaultTo('active');table.dateTime('created_at').notNullable();table.dateTime('updated_at').nullable();}),// 插入数据knex.table('users').insert({name: 'limichange',email: 'limichange@hotmail.com',password: 'asdfasdf',uuid: '1',created_at: new Date()})]);
};
exports.down = function(knex, Promise) {return Promise.all([// 删除表knex.schema.dropTable('users')]);
};

接下来用命令行工具来更新数据库。

➜ knex migrate:latest
Using environment: development
Batch 1 run: 1 migrations
/Users/limi/website/db/migrations/20160719121550_add-user.js

只要执行撤销的操作,就可以让数据库回滚。

➜ knex migrate:rollback
Using environment: development
Batch 1 rolled back: 1 migrations
/Users/limi/website/db/migrations/20160719121550_add-user.js

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_780833.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网站中使用JS禁止右键菜单,禁用复制等功能

☁️上次我说了怎么关闭网站的JS代码,让其可以轻松复制,这回我说说怎么让你自己的网站禁止复制 首先我们看看怎么禁止右键功能 这很明显,右键废了,视频中看不出来,但是从瞎划拉也可以看出右键用不了✌️我很高兴哈哈…

网站统计功能的设计与实现

本文简要介绍网站统计功能的设计与实现。本文分为以下五个部分:埋点设计与实现页面引入数据接收数据入库统计分析一、埋点设计与实现在JavaScript中,包含了很多对象,可以用于获取用户的数据。比如Document对象用于分析每个载入浏览器的 HTML …

CssStats – 分析和优化网站 CSS 代码的利器

CssStats 是一个在线的 CSS 代码分析工具,你只需要输入网址或者直接 CSS 地址即可进行 CSS 代码的全方位分析,是前端开发人员和网页设计师分析网站 CSS 代码的利器,可以统计出 CSS 代码里的规则数量、字体颜色、字体大小、背景颜色数等等。 马…

高并发高流量网站架构

为什么80%的码农都做不了架构师?>>> #0 系列目录# 应用系统架构大型网站技术架构的演进与设计大型网站技术架构的实践大型网站图片服务器架构的演进大型网站架构的灵魂—性能大型网站架构的缓存亿级Web系统搭建—单机到分布式集群高并发Web服务的演变—…

linux shell脚本备份数据库和网站到远程FTP服务器

2019独角兽企业重金招聘Python工程师标准>>> #!/bin/bash#本地备份路径 LOCAL_BACK_PATH/home/backup#mysqldump的执行路径 MYSQL_PATH/usr/local/mysql/bin/mysql MYSQL_DUMP_PATH/usr/local/mysql/bin/mysqldump#FTP信息 FTP_BIN_PATH/usr/bin/ftp FTP_IP10.146.1…

Linux初学者必知的5个学习网站

分享几个Linux初学者一定要知道的5个学习网站 工具/原料 有一颗学习Linux的心电脑方法/步骤 1推荐一:鸟哥的Linux私房菜(http://vbird.dic.ksu.edu.tw/) 这个不用多说吧,只要你学习Linux就肯定听说过鸟哥的私房菜,经典…

怎么让网站在本地支持SSL?

打开vs,点击项目,查看属性,打开ssl 如果有什么危险提示,就允许 右击项目,选择属性 运行项目

开发者必去的10大国内网站推荐

2019独角兽企业重金招聘Python工程师标准>>> 1、dev666网址导航 dev666网址导航是非盈利无广告、为开发者量身定制的网址导航,整体界面纯净无广告,开发者常用的网站一触即达,主要模块包括:『名站导航』、『开放平台』、…

PhantomJS NodeJS 在京东网站前端监控平台的最佳实践

本文首发于 infoQ 及「前端之巅」微信公众号(微信群直播记录),感谢 infoQ 前端之巅尾尾同学对文章的整理和校对、微信群直播的组织策划为什么需要一个前端监控系统 通常在一个大型的 Web 项目中有很多监控,比如后端的服务 API 监控…

LNMP环境, 网站无法访问

LNMP 环境, 网站无法访问1. 查服务器自身防火墙是否放行端口2. 服务器托管方是否有安全组设置3.查看服务器端口监听状态1. 查服务器自身防火墙是否放行端口 查看命令 # centos7 查看防火墙状态 firewall-cmd --state # centos6 查看防火墙状态 service iptables status防火墙…

在线小说网站的设计与实现(附源码)

最近在做一个课程设计,在线小说网站的设计,以下是课题要求,需要项目练手的童鞋可以试试身手。 由于最近新学了JavaEE,所以采用了jspservlet来写,前端部分用了少量的js和jQuery处理,数据库用了MySQL&#xf…

jmeter模拟对网站做压力测试

一般的网站,在进入业务功能前先需登录,然后才能访问业务功能。基本框架如下 详细步骤: 1 .用badboy录制登录,访问随意一个网址。 2.用jmeter打开,一会自己写的时候可以参考里面的参数名称或路径什么的。如果对http熟悉…

一、大型网站架构演化

为什么80%的码农都做不了架构师?>>> (1)大型网站软件系统的特点 高并发,大流量;高可用;海量数据;用户分布广泛,网络情况复杂;安全环境恶劣;需求快…

警方揭秘电信诈骗:黑客攻击政府网站非法获取个人信息

近日,河南省驻马店市平舆县警方成功破获一系列特大电信诈骗案,捣毁了多个诈骗团伙,这些团伙分工明确,一年之内就在全国作案2300多起,涉案资金超过3000万元。 诈骗团队是如何获取公民个人信息的?诈骗链条上各…

asp.net core下的如何给网站做安全设置

首先,我们来看下stack overflow网站的请求头文件: 可以看到一些我们熟悉或是陌生的HTTP头部文件字段。在这里我们在对HTTP输入流的头部文件中,做一些基本的防护。首先要明确,既然我们是对HTTP头部做处理,那么就需要在S…

基于Nginx的负载均衡网站架构

操作环境:VMware Fusion 操作系统:Centos6 实验架构设计图及实现:实验说明:Nginx服务器作为Web前端,当接收到用户的Web访问请求时,将请求转发 给内部真正的WEB服务器。Nginx具有两个网卡,一个网…

psn请验证您不是机器人_机器人模仿人类难?网站验证码是如何区分人类和机器的?...

为了避免注册垃圾用户以及盗取数据(撞库),大多数网站都会用验证码来阻止机器人登陆,虽然验证码让很多用户感到厌烦,但它成功地阻挡了绝大多数机器人,也在保护我们数据的安全。那么验证码是怎么区分人类和机器人(电脑程序)的呢&…

网站Web业务架构从小到大演变

有一天,我突发奇想创建了一个站点,基于 LNMP 架构,起初只有我自己访问,后来因为我点儿正,访问量越来越大,所以最终导致下面的架构演变。 1、单台机器 单台机器因为只是一个小站,访问量一天也没有…

网站时常出现too many connection的错误

安装了一个程序,大访问量测试的时候发现竟然连接不上数据库了,仔细检查发现MySQL数据库出现1040错误,提示“too many connections”。那么改如何解决这个问题呢?其实MySQL默认的最大连接数为100,可能在大访问量的时候造…

什么是域名?什么网站名?什么是URL?

2019独角兽企业重金招聘Python工程师标准>>> 搬运自:https://jingyan.baidu.com/article/2c8c281df0afd00008252aa7.html 转载于:https://my.oschina.net/tanghaoo/blog/3006600