node.js 使用 sequelize 操作数据库

安装 sequelize

在项目里面安装 sequelize 和 mysql ,也可以使用 sequelize-cli ,这里只是先学习下 sequelize 的
npm i sequelize
npm i mysql

连接数据库

首先在新建一个 config.js ,用来存放数据库相关的配置

const config = {
    database:'test',
    username:'www',
    password:'www',
    host:'localhost',
    port:3306
}

module.exports = config

然后新建一个 db.js

const config = require('./config')

// connect db
const sequelize = new Sequelize(config.database, config.username, config.password, {
  host: config.host,
  port: config.port,
  dialect: 'mysql',
  operatorsAliases: false
})
module.exports = sequelize

添加下面的代码可以检查是否连接成功:

sequelize
  .authenticate()
  .then(() => {
    console.log('Connection has been established successfully.')
  })
  .catch(err => {
    console.error('Unable to connect to the database:', err)
  })

新建表,同步表

创建一个公共的方法,用来新建 model

/**
 * 定义数据模型的公共方法
 * @param {any} name 模型名称【数据库表名】
 * @param {any} attributes 数据字段集合
 * @returns 数据模型对象
 */
function defineModel (name, attributes) {
    var attrs = {}

    for (let key in attributes) {
        let value = attributes[key]
        if (typeof value === 'object' && value['type']) {
            value.allowNull = value.allowNull || false
            attrs[key] = value
        } else {
            attrs[key] = {
                type: value,
                allowNull: false
            }
        }
    }

    // 附加公共字段
    attrs.createAt = {
        type: Sequelize.BIGINT,
        allowNull: false
    }
    attrs.updateAt = {
        type: Sequelize.BIGINT,
        allowNull: false
    }
    // 状态:0表示有效,1表示无效,2表示已删除,默认为0.
    attrs.status = {
        type: Sequelize.INTEGER,
        allowNull: false
    }
    // 版本
    // attrs.status = {
    //     type: Sequelize.INTEGER,
    //     allowNull: false
    // }

    // 调用seq的方法定义模型并返回
    return sequelize.define(name, attrs, {
        tableName: name,
        timestamps: false,
        hooks: {
            beforeValidate: function (obj) {
                let now = Date.now()
                if (obj.isNewRecord) {
                    obj.createAt = now
                    obj.updateAt = now
                    // obj.version = 0
                } else {
                    obj.updateAt = now
                    // ++obj.version
                }
            }
        }
    })
}

创建一个 models 文件夹,创建一个 goods 文件,把上面那个公共的定义模型方法进入,创建 goods 表格。

var db = require('../db')
var Sequelize = require('sequelize')
// 创建表模型
const Goods = db.defineModel('goods', {
    id: {
        type: Sequelize.BIGINT(11),
        primaryKey: true,
        allowNull: false,
        unique: true,
        autoIncrement: true
    },
    name: Sequelize.STRING(50),
    img_src: Sequelize.STRING(100),
    price: Sequelize.FLOAT
})
// 同步表结构
Goods.sync()   // 如果表存在 不会刷新结构
Goods.sync({ force: true })   // 如果表存在 会删除表重新建表
module.exports = Goods

表插入数据

如果要操作 model 插入一些初始数据,可以直接用图形工具进行操作,也可以用 sequelize 来,还是在 goods 那个文件里面,添加9条数据进去。

// 填充数据
for (let n=1;n<10;n++) {
    Goods.create({
        name:`good${n}`,
        img_src: `/static/imgs/good${n}.jpg`,
        price: Math.random()*100,
        status:1
    })
}

获取表数据

获取表数据主要用的是 findAll, find 这些 api,具体详情参见官网: sequelize 官网
利用 koa 创建一个接口,在这个接口返回 goods 表的数据,有关于 koa 的这块这里就先不管了哈,下面有一个是获取列表数据,一个是获取单条数据。

const goods = require('../models/goods')

module.exports = {
    'GET /goods/list': async (ctx, next) => {
        let data = await goods.findAll()
        ctx.body = data
    },
    'GET /goods/:id': async (ctx, next) => {
        let gid = ctx.params.id
        let data = await goods.findOne({ where: {id: gid} })
        ctx.body = data
    }
}

转载于:https://www.cnblogs.com/linxue/p/10149565.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Node.js中连接SQL Server数据库有多种方法,其中一种常用的方法是使用mssql模块。可以使用以下代码来连接SQL Server数据库: ```javascript var sql = require('mssql'); var config = { user: 'sa', password: '123', server: 'localhost', database: 'QCode' }; sql.connect(config).then(function() { // 在这里执行数据库操作 }).catch(function(err) { // 处理连接错误 console.log(err); }); ``` 在上面的代码中,首先引入mssql模块,并配置数据库连接的相关信息。然后使用`sql.connect()`方法连接到SQL Server数据库。连接成功后,可以在`.then()`回调函数中执行数据库操作,比如查询数据或插入数据等。如果连接失败,可以在`.catch()`回调函数中处理连接错误。 引用提供了一个示例代码,展示了如何使用mssql模块连接SQL Server数据库,并查询dbo.QCodeInfo表的前10条数据。可以根据自己的需求修改数据库配置和查询语句。 引用提供了有关Node.js连接SQL Server数据库的更详细的说明和实现技巧,可以参考该资料以获取更深入的了解。 另外,还可以使用其他模块如tedious、sequelize等来连接SQL Server数据库,具体的使用方法可以参考它们的文档和示例代码。 引用提供了一个提示,在新建的js文件中设置为Node.js的启动文件,并按F5执行程序。这是在VS Code中调试Node.js程序的常用方法,可以方便地查看程序的执行结果和调试错误。 总结起来,要在Node.js中连接SQL Server数据库,首先需要引入适当的模块,配置数据库连接信息,然后使用相应的方法建立连接,执行数据库操作。具体的实现方式可以根据自己的需求和喜好选择不同的模块和方法。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值