美文网首页
sequelize的使用

sequelize的使用

作者: 卡布i | 来源:发表于2020-01-21 19:37 被阅读0次

    sequelize的使用

    与数据库交互有两种方法:

    使用数据库的原生查询语言(例如SQL) 使用对象数据模型(Object Data Model,简称 ODM)或对象关系模型(Object Relational Model,简称 ORM)。 ODM / ORM 能将网站中的数据表示为 JavaScript 对象,然后将它们映射到底层数据库。一些 ORM 只适用某些特定数据库,还有一些是普遍适用的。 使用 SQL 或其它受到支持的查询语言才能达到最佳性能。ODM 通常慢一些,因为在对象和数据库格式之间存在一层用于映射的翻译代码,使它不一定会选用最高性能的数据库查询(尤其是普遍使用级别的 ODM,它必须在各类数据库功能方面做出更大的折衷)。

    使用 ORM 的好处是:程序员可以继续用 JavaScript 对象的思维而不用转向数据库语义的思维。 在(同一个或不同网站)使用不同数据库时尤为明显。使用 ORM 还可以更方便地对数据进行验证和检查。

    Sequelize:Sequelize是一款基于Nodejs功能强大的异步ORM框架。 同时支持PostgreSQL, MySQL, SQLite and MSSQL多种数据库,很适合作为Nodejs后端数据库的存储接口,为快速开发Nodejs应用奠定扎实、安全的基础

    本文基于sqlite

    SQLite是一个进程内的库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。它是一个零配置的数据库。

    就像其他数据库,SQLite 引擎不是一个独立的进程,可以按应用程序需求进行静态或动态连接。SQLite 直接访问其存储文件。

    安装sequelize

    Sequelize 可通过 npm ( 或 yarn ) 获得. 中文文档

    npm install sequelize
    
    

    你还需要手动安装对应的数据库驱动程序:

    # 选择对应的安装:
    $ npm install --save pg pg-hstore # Postgres
    $ npm install --save mysql2
    $ npm install --save mariadb
    $ npm install --save sqlite3
    $ npm install --save tedious # Microsoft SQL Server
    
    

    建立连接(sqlite)

    要连接到数据库,你必须创建 Sequelize 实例. 这可以通过将连接参数分别传递给 Sequelize 构造函数或传递单个连接 URI 来完成:

    var path = require('path')
    const Sequelize = require("sequelize");
    
    const sequelize = new Sequelize(undefined, undefined, undefined, {
      host: "localhost",
      dialect: "sqlite",
      storage: path.join(__dirname,"../database/database.sqlite") //数据存放路径
    });
    
    

    测试连接

    你可以使用 .authenticate() 函数来测试连接.

    // 在model文件下输入node note.js测试数据库链接是否成功
    
    sequelize
      .authenticate()
      .then(() => {
        console.log("Connection has been established successfully.");
      })
      .catch(err => {
        console.error("Unable to connect to the database:", err);
      });
    
    

    表建模

    模型是一个扩展 Sequelize.Model 的类. 模型可以用两种等效方式定义. 第一个是Sequelize.Model.init(属性,参数):

    const Model = Sequelize.Model;
    class User extends Model {}
    User.init({
      // 属性
      firstName: {
        type: Sequelize.STRING,
        allowNull: false
      },
      lastName: {
        type: Sequelize.STRING
        // allowNull 默认为 true
      }
    }, {
      sequelize,
      modelName: 'user'
      // 参数
    });
    
    

    另一个是使用 sequelize.define:

    const Note = sequelize.define("note", {
      text: {
        type: Sequelize.STRING,
        allowNull: false
      }
    });
    
    

    在内部, sequelize.define 调用 Model.init.

    上面的代码告诉 Sequelize 在数据库中期望一个名为 users 的表,其中包含 firstName 和 lastName 字段.

    // 注意:使用{force:true}每次存数据前都将删除之前同名的文件
    Note.sync({force:true})
      .then(() => {
        Note.create({
          text: "数据库里的数据"
        });
      })
    
    

    查询

    // 查找所有用户
    // {raw: true} 
    User.findAll().then(users => {
      console.log("All users:", JSON.stringify(users, null, 4));
    });
    // {raw: true}找到的结果显示原始数据,效果类似JSON.stringify
    // 创建新用户
    User.create({ firstName: "Jane", lastName: "Doe" }).then(jane => {
      console.log("Jane's auto-generated ID:", jane.id);
    });
    
    // 删除所有名为“Jane”的人
    User.destroy({
    //使用where查找
      where: {
        firstName: "Jane"
      }
    }).then(() => {
      console.log("Done");
    });
    
    // 更新数据, 将所有没有姓氏的人改为“Doe”
    User.update({ lastName: "Doe" }, {
      where: {
        lastName: null
      }
    }).then(() => {
      console.log("Done");
    });
    
    

    另外,node.js后台如何调试

    如果你在编写Node.js代码,node-inspector是必备之选,比Node.js的内置调试器好出许多。使用起来跟Chrome的javascript调试器很相似。

    使用npm安装:

    npm install node-inspector
    
    

    然后需要通过浏览器连接到node-inspector,需要启动inspector服务

    node-inspector 
    
    

    启动, 默认8080端口

    最后以debug模式运行node.js应用

    node --debug app.js
    
    

    通过URL http://127.0.0.1:8080/debug?port=5858 就可以进行调试了。

    相关文章

      网友评论

          本文标题:sequelize的使用

          本文链接:https://www.haomeiwen.com/subject/pagezctx.html