zoukankan      html  css  js  c++  java
  • sequelize初使用

    官网地址:Sequelize

    Sequelize is a promise-based ORM for Node.js v4 and up. It supports the dialects PostgreSQL, MySQL, SQLite and MSSQL and features solid transaction support, relations, read replication and more.

    ORM: 对象关系映射(Object Relational Mapping,简称ORM,或O/RM,或O/R mapping)

    个人理解:sequelize可以建立与数据库中表形成关系数据映射的模型,然后使用自身提供的api来操作模型,从而操作数据库中的表。

    一、安装

    1、使用npm安装

    前提:需要安装node

    npm install --save sequelize

    npm install --save mysql2 

    我用的数据库是mysql,可以根据需要进行安装

    2、使用yarn安装

    前提:需要安装yarn

    yarn add sequelize

    yarn add mysql2

    二、配置

    var Sequelize = require("Sequelize");
    const sequelize = new Sequelize('数据库', '用户名', '密码', {
      host: 'localhost',
      port:'3306',
      dialect: 'mysql',
      timezone : "+08:00",
    });
    
    exports.sequelize = sequelize;

    上面是连接数据库的一个简单配置,其他配置可以查看官方文档

    三、定义model和表之间的映射

    这里我创建了一个用户模型文件,User.js

    var Sequelize = require("sequelize");
    var sequelize = require('../config.js').sequelize;
    
    exports.User = sequelize.define('user',{
        Id:{type:Sequelize.INTEGER},
        name:{type:Sequelize.STRING},
        password:{type:Sequelize.STRING},
        number:{type:Sequelize.STRING},
        mobile:{type:Sequelize.STRING},
        email:{type:Sequelize.STRING},
        divisionId:{type:Sequelize.STRING},
        role:{type:Sequelize.INTEGER,defaultValue:0},
        creditPoint:{type:Sequelize.INTEGER,defaultValue:100}
    },{
        freezeTableName:true,
        timestamps:false
    });

    具体的数据类型可以查看官方文档中的 Model definition 说明

    四、数据查询操作

    var User = require('../models/User.js').User;
    
    User.findAll().then(user => {
        console.log(user);
    })

    我在user表里插入了一行数据,查询结果打印如下:

    五、错误整理

    1、找不到表:Table 'experiment_car.users' doesn't exist

    我的表名user,查询时默认加"s",变成了“users”

    解决方法:在model文件里加上{ freezeTableName:true }的 配置,sequelize就不会在附加“s”字符

    参考:sequelize for Node.js : ER_NO_SUCH_TABLE

    2、找不到字段:Unknown column 'createdAt' in 'field list'

     

     user表里面没有createdAt字段,默认情况下,Sequelize将添加属性createdAtupdatedAt模型,便于查询数据插入和最新更新时间

    解决方法有两种:

    1)在表中添加createdAt和updatedAt字段

    2)在model文件里加上{ timestamps:false } 的配置

     

  • 相关阅读:
    NSAttributedString可以强制转换为NSMutableAttributedString类型吗?下面这代码有什么问题 为什么报错
    jQuery中.bind() .live() .delegate() .on()的区别 和 三种方式写光棒事件 动画
    锋利的jQuery中的事件与动画
    使用jQuery快速高效制作网页交互特效
    Java中abstract和interface的区别
    一期结业KTV项目难点
    类和对象
    循环结构进阶
    Java中的数组
    Java初始化
  • 原文地址:https://www.cnblogs.com/suiyueshentou/p/7592505.html
Copyright © 2011-2022 走看看