美文网首页
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 就可以进行调试了。

相关文章

  • orm 使用Sequelize

    Adservice 数据库使用mysql orm 使用Sequelize 表映射使用 sequelize-auto...

  • sequelize 常见问题

    本文主要列举使用 egg-sequelize 以及 sequelize 的常见问题。 1.sequelize db...

  • 已经创建数据库的,nodejs如何用sequelize自动生成m

    已经创建好数据库的,如果使用sequelize自动生成models。使用sequelize-auto生成所有Mod...

  • egg.js sequelize deprecated Stri

    在使用egg.js的egg-sequelize报以下错误sequelize deprecated String b...

  • sequelize学习和使用

    为什么要使用sequelize? Sequelize是node.js中的ORM框架,适合使用node去连接关系型数...

  • Sequelize 使用

    说起ORM,Object Relational Mapping,有Hibernate,JPA等成熟的Java框架。...

  • Sequelize使用

    Node.js 使用sequlize 操作mysql数据库时,查询一条记录中两个字段的加和官方文档中文文档 Seq...

  • sequelize的使用

    sequelize的使用 与数据库交互有两种方法: 使用数据库的原生查询语言(例如SQL) 使用对象数据模型(Ob...

  • sequelize

    const Sequelize = require('sequelize');const sequelize = ...

  • node sequelize 快速开始

    -1. 前言 以简单用户登录流程了解使用Sequelize 0. 环境引入 详情参考sequelize手册如果你不...

网友评论

      本文标题:sequelize的使用

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