zoukankan      html  css  js  c++  java
  • [转]在node.js中,使用基于ORM架构的Sequelize,操作mysql数据库之增删改查

    本文转自:https://www.cnblogs.com/kongxianghai/p/5582661.html

    Sequelize是一个基于promise的关系型数据库ORM框架,这个库完全采用JavaScript开发并且能够用在Node.JS环境中,易于使用,支持多SQL方言(dialect),。它当前支持MySQL,、MariaDB、SQLite、PostgreSQL、Sql Server 数据库。

    目前在Node.js中,Sequelize的关注度较高,用的也较多。

    因为是基于promise规范,在调用后的处理上不再是callback方式,而是统一的链式调用方式,调用直观,易读。

    那么就先用起来吧,虽然还有很多坑,但互联网上开源的东西有哪个是让人特别省心的呢,是个好东西就用吧,碰到坑也只能用人肉去填了,(^-^)。

    安装

    建个工程文件夹,并进入,在命令行中运行安装sequelize命令。

    npm install sequelize

    安装mysql

    npm install mysql

    创建sequelize对象

    在代码顶部先要把sequelize库require进来。

    第一个参数'test1' 是数据库名。

    第二个参数'root'是登录用户名。

    第三个参数'123456'是登录用户对应的密码。

    第四个参数:

    host:数据库主机地址

    dialect:'mysql'|'sqlite'|'postgres'|'mssql'

    var Sequelize = require('sequelize');
    
    var sequelize = new Sequelize('test1', 'root', '123456', {
        host: '172.16.16.138',
        dialect: 'mysql'
    });

    表结构

    在mysql的test1数据库中建users表。

    创建表对应的对象模型

    一条记录对应一个User对象。

    var User = sequelize.define('user', {
        name: Sequelize.STRING,
        password: Sequelize.STRING,
        mail: Sequelize.STRING
    });

    插入记录

    调用模型对象的create方法插入一条user记录。

    通过promise的方式对插入完成和插入失败进行处理,链式调用非常方便,再也看不到callback了。

    复制代码
    User.create({
        name: 'XiaoMing',
        password: '1234567890',
        mail: 'xiaoming@qq.com'
    }).then(function(result){
            console.log('inserted XiaoMing ok');
    }).catch(function(err){
            console.log('inserted XiaoMing error');
            console.log(err.message);
    });
    复制代码

    查询记录

    调用模型对象的findAll方法进行查询操作,在参数中可以制定where条件。

    where条件甚至可以支持数据库自身特有的函数。

    where具体写法,参考:http://sequelize.readthedocs.io/en/latest/docs/querying/

    复制代码
        User.findAll({
            where:{
                name:{
                    $like:'Zhang%'
                }
            }
        }).then(function(result){
                console.log('query all users');
                for (var i = 0, usr; usr = result[i++];) {
                    console.log('nae=' + usr.name + ', password=' + usr.password + ', mail=' + usr.mail);
                }
        });
    复制代码

    修改记录

    调用模型对象的update方法进行更新操作,在第一个参数中指定更新的字段和值,在第二个参数中指定条件。

    复制代码
    User.update({
        password:'12'
    },{
        where:{
            name:{
                $like:'Xiao%'
            }
        }
    }).then(function(result){
            console.log('updated user');
            console.log(result);
    });
    复制代码

    删除记录

    调用模型对象的destroy方法进行删除操作,在参数中指定删除条件。

    复制代码
    User.destroy({
        where:{
            name:{
                $like:'Zhang%'
            }
        }
    }).then(function(result){
            console.log('destroy user');
            console.log(result);
    });
    复制代码

    官方文档:

  • 相关阅读:
    【安徽集训】fiend
    【安徽集训】Emerald
    【安徽集训】Entropy
    【安徽集训】字符串
    【福建集训】果树
    【CF335 E】Counting Skyscrapers
    【BZOJ 3514】Codechef MARCH14 GERALD07 加强版
    【未知来源】Randomized Binary Search Tree
    【ZJOI 2016】旅行者
    【AGC002 E】Candy Piles
  • 原文地址:https://www.cnblogs.com/freeliver54/p/10565975.html
Copyright © 2011-2022 走看看