暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

node.js使用Sequelize操作数据库

技术几句杂谈 2020-04-20
754

Sequelize是一个基于 promise 的 Node.js ORM(对象关系映射)。
目前支持 Postgres、MySQL、MariaDB、SQLite和Microsoft SQL Server; 它具有强大的事务支持, 关联关系, 预读和延迟加载,读取复制等功能。
官方网址:
https://sequelize.org/v5/index.html
npm安装:npm install --save sequelize
使用何种数据库,要安装对应的npm类库,对应的几类数据库安装:

数据库的初始化代码:
const Sequelize = require('sequelize');
//第一种方式:传递数据库连接信息(ip、端口、用户名密码等)
sequelize = new Sequelize('database', 'username', 'password',{
host: 'localhost',
 dialect: /* one of 'mysql' | 'mariadb' | 'postgres' | 'mssql' */});
//第二种方式:使用uri的字符串连接方式
sequelize = new Sequelize('postgres://user:pass@example.com:5432/dbname');
验证数据库连接是否成功:

    sequelize.authenticate().then(() => {     console.log('Connection has been established successfully.');

}).catch(err => {
console.error('Unable to connect to the database:', err);
});
// await方式:

       await sequelize.authenticate();

数据库的操作上,只要是以模型和数据库的表进行对应,同时也支持sql语句的查询方式。
模型定义(https://sequelize.org/v5/manual/models-definition.html):
const Model = Sequelize.Model;
class User extends Model {}
User.init({
//属性设置     
firstName: {
 type: Sequelize.STRING,
 allowNull: false
  },      lastName: {       type: Sequelize.STRING     }}, {
//属性设置  
  sequelize,
  modelName: 'user'  
 });

需要注意的是,上述定义一个user的模型,需要对应在数据库表中,有users这个表,要实现自己定义表名,需要在属性中设置以下两个参数:

        freezeTableName: false,

   tableName: 'define_user'


直接执行sql语句查询(https://sequelize.org/v5/manual/raw-queries.html):
sequelize.query("SELECT * FROM `users`", { type: sequelize.QueryTypes.SELECT})
 .then(users => {    
//返回json对象
 })



参考文档:
官网:
https://sequelize.org/v5/index.html
中文文档网站:
https://github.com/demopark/sequelize-docs-Zh-CN

文章转载自技术几句杂谈,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论