MP 新版本 [2 mysql sequelize 搭建数据库]

二 msqul sequelize 搭建数据库

正在发懵中
这里写图片描述

搭建网站后台数据库部分,本来想的是使用XAMPP 和ecshop .
但是之后说,我们的网站是node 配合 sequelize 进行数据库搭建。
okay,lets do it right now;

度娘告诉我关于sequelize:

1 http://www.cnblogs.com/showtime813/p/4512699.html
2 http://cnodejs.org/topic/5201c94144e76d216a39c4dc
3 http://blog.csdn.net/jimscx/article/details/45701921
4 http://my.oschina.net/zj0303/blog/305384
5 http://www.phperz.com/article/15/1113/169037.html
6 官方API在这里面

关于mysql

1 http://blog.chinaunix.net/uid-12707183-id-2918849.html
2 http://www.cnblogs.com/mr-wid/archive/2013/05/09/3068229.html#d22
3 mysql常用指令

3 node mysql
1 http://yh.512876.com/diannao/479.html
2 http://www.jb51.net/article/80393.htm

一下是在摸索过程中的胡言乱语,不成体统

1 创建新的数据库 creat database mindpush;

2 进入该数据库 use mindpush;
3 读出数据库的所有表 show tables;
4 读出某一个表中具体数据 select * form thisname;
5 删除其中某个表 drop table thisname;

通过mysql的cmd 建立一个名为mindpush的数据库,之后关于数据表的操作全部使用 node来进行。

创建一个数据表:
在项目中创建node.js

//实例化sequelize 数据库连接
var Sequelize = require('sequelize');
sequelize = new Sequelize('your database name ','root','password',{
    host: "localhost",
    port: 3306,
    dialect: 'mysql'
});
//实例化sequelize 数据库连接 --end

//创建表
var safety = sequelize.define('safety', {
    // auto increment, primaryKey, unique
    id : {type : Sequelize.INTEGER, autoIncrement : true, primaryKey : true, unique : true},
       // 这样的话,表中数据ID 会自己增加 ,不用自己写
    // comment
    title : {type : Sequelize.STRING, comment : 'Task title'},

    // allow null
    description : {type : Sequelize.TEXT, allowNull : true},

    // default value
    deadline : {type : Sequelize.DATE, defaultValue : Sequelize.NOW}
});

safety
     .sync({force: true})
     .then(function(res){
           console.log("res is" + res);
     })



//创建表 --end

运行一下
MP 新版本 [2 mysql sequelize 搭建数据库]_第1张图片

ok,这样创建了一个数据表,然后再mql的控制器中输入
show tables; 就可以读出有几个数据表了。
MP 新版本 [2 mysql sequelize 搭建数据库]_第2张图片

向表中增加数据,继续向node.js中添加

//插入数据
task
  .create({ description: 'John Doe', title: 'senior engineer' })
  .then(function(employee) {
    console.log(employee.get('description')); 
  })

//查找数据
task
    .findOne({ where: {title: 'senior engineer'} }).then(function(data) {
     console.log(data.description);
})


以下是控制台输出结果:
这里写图片描述

在查找数据的时候,也可以根据ID

safety.findById(1).then(function(employee) {
   console.log(employee.get('id')); 
})

使用查找or创建

safety
  .findOrCreate({where: {title: 'sdepold'},
                 defaults: {description: 'Technical Lead JavaScript'}})
 .spread(function(user, created) {
    console.log(user.get({
      plain: true
    }))
    console.log(created)

    /* 即相当于创建数据如下
      {
        title: 'sdepold',
        description: 'Technical Lead JavaScript',
        id: 1,
      }
      created: true
    */
  })

从表中删除数据

// 删除age 属性值为 34的数据
safety.destroy({
  where: {
    age: '34'
  }
});

更改表中数据

//将 age: '23' 的 title:更改为 what you mnjop
safety.update({ title: 'what you mnjop', }, { where: { age: '23' } });

至此,最最基础的数据表增删改查功能过了一遍。

Then , 基本的功能尝试之后,继续学习。

Import

可以使用导入,将模型的定义文件独立写在一个文件中



 // in your server file - e.g. app.js var Project = sequelize.import(__dirname + "/path/to/models/project") // The model definition is done in /path/to/models/project.js // As you might notice, the DataTypes are the very same as explained above module.exports = function(sequelize, DataTypes) { return sequelize.define("project", { name: DataTypes.STRING, description: DataTypes.TEXT }) } The import method can also accept a callback as an argument. sequelize.import('project', function(sequelize, DataTypes) { return sequelize.define("project", { name: DataTypes.STRING, description: DataTypes.TEXT }) })

下面来看看怎么模块化创建一个数据表;
将引入sequelize模块 和定义表结构分开
db.js

var Sequelize=require('sequelize');

exports.sequelize = function () {
    var sequelize=new Sequelize(config.db.database,config.db.user, config.db.password,{
        host:config.db.host,
        port:config.db.port,logging: console.log});

    return sequelize;
}

pro.js


var path = require('path');

module.exports.db = {
    host: "localhost",
    port: 3306,
    user: "root",
    database: "mindpush",
    password:"111111"
}

统一创建数据表
run.js


var config=require('./pro.js');

config.db = config.db;
global.config = config;

var sequelize=require('./db').sequelize();
var Sequelize=require('sequelize');


//批量创建数据表
sequelize.import('./security'); //创建数据表security


sequelize
    .sync()
    .then(function(result){ console.log('success') });

security.js

module.exports = function (sequelize, DataTypes) {
    return sequelize.define('security', {
      id: { type: DataTypes.BIGINT(11), autoIncrement: true, primaryKey: true, unique: true, comment:'属性Id' },
      name: { type: DataTypes.STRING, allowNull: false, comment:'属性名' }
    },
    {
        underscore: false,
        timestamps: false,
        freezeTableName: true
    });
}

在node 中运行一下run.js ,然后就创建出一个security的数据表。

到今天已经大约半个月的时间了,做出来一个公司简介。

这里写图片描述
思路还是有点乱,简单总结一下。

从视图文件可以看出来,分两个方向,数据库与后端,前端与后台

这里写图片描述

先看一下web这条线。
这里写图片描述

MP 新版本 [2 mysql sequelize 搭建数据库]_第3张图片

这里普通页面contact渲染直接出来,但是需要后台数据的about ,就用的是require了一个模块

MP 新版本 [2 mysql sequelize 搭建数据库]_第4张图片

而这个模块中,封装了那些前端方法,比如join

看一下对应的前端怎么读出的后台数据:
这里写图片描述

然后看后台与数据库这条线:

路由
这里写图片描述

注: 【】里是中间件部分

这里写图片描述

MP 新版本 [2 mysql sequelize 搭建数据库]_第5张图片

最后到了这里,这是从路由到渲染出页面。

看到这个了吗
这里写图片描述

这就是用来与数据库进行连接的,
lib文件夹中,
MP 新版本 [2 mysql sequelize 搭建数据库]_第6张图片

data 中是数据表的增删改查的操作方法
model是创建的需要的数据表

你可能感兴趣的:(MP 新版本 [2 mysql sequelize 搭建数据库])