Nodejs

  • 起因

    redis是一个工具,用户管理保存在内存中的数据,常常被应用于缓存等。它有nodejs的使用版本,我想希望通过它来完成登录模块。

    思路

    大概思路如下:

    1. 用户登录成功之后,后端利用redis把用户token和id写进内存,并且回传token
    2. 前端接收到token之后把token写进cookie,这样以后每次请求都会带上cookie
    3. 在每个请求(除了登录/注册)之前都挂在token校验中间件,如果没有token或者token不正确,则抛出错误,否则进入下一个中间件。

    redis基本使用

    1. 安装

    npm install redis --save
    

    2. 最简单的例子

    var redis
  • 原因

    之所以要学mongo,是因为自己要写一个githubStarManager,见 #70 ,以前用过mysql和sequelize,这次基于两个原因选用了mongo。

    1. 我要从github公共api上抓数据,用mongo的话能够直接存储返回的json数据,不需要再拆分字段。
    2. 之前一直听说mongo,也想试试新鲜事物。

    如何快速上手一种数据库?

    经过之前mysql和sequelize的学习, #43, #44 , 我总结出了快速学习一门数据库的几个基本步骤。

    1. 安装数据库本身
    2. 学会在命令行中直接操作数据库。(这一点非常重要,因为这可以促使我们深刻理解数据库的定义和组织方式。即便在后面
  • 问题

    鉴于直接使用mysql包操作数据库带来的各种不方便,见 #43 ,我找到了sequelize,试用了一下,觉得还不错。

    使用过程

    1. 安装

    npm install sequelize --save
    

    sequelize支持如下数据库:MySQL, MariaDB, SQLite, PostgreSQL and MSSQL,不同的数据库需要安装各自的包,因为我操作的是mysql,所以要安装mysql包

    npm install mysql --save
    

    2. 创建连接

    #43 说过,每次操作都需要打开和关闭连接既耗费性能,也代码冗余。mysql包本身提供方法创建连接池。

    var pool
  • 问题

    这年头,不会点node都不好意思说自己是前端。ok,下面显示的是一个添加用户和显示所有用户的一个简单demo。

    准备条件

    1. express
    2. express generator生成的项目
    3. npm install mysql --save
    4. 电脑安装了mysql
    5. 创建数据库test和数据表mytable,mytable有两个字段。id:int(4), name:varchar(20)(当然,名字你可以随便取,下面相应的改变代码就好了)

    使用方法

    1. 把mysql的配置写在配置文件中

    // config.js
    module.exports = {
      // MySQL数据库联接配置
      my
  • 原因

    try catch捕获错误这个我原先知道,但是与express和co结合起来的时候我就觉得其中有些微妙的变化,决定好好研究一下。
    #1. try..catch

    JSON.parse('a');
    console.log('finish');
    

    这段代码会在执行第一行的时候报错,程序中断,不会执行第二行。

    try{
       JSON.parse('a');
    } catch(e) {
       console.log(e);
    }
    console.log('finish');
    

    这段代码会在执行第二行的时候报错,但是错误会被catch捕获,输出错误信息,程序得以继续执行,输出'finish'

    ok,下