node JS 中 sequelize 結合 mysql 實現增加、查詢、修改和刪除

舊城tk發表於2020-12-15

一、node JS 中 sequelize 結合 mysql 實現增加、查詢、修改和刪除

  1. sequelize 結合 mysql 實現增加,create.js 程式碼如下所示:
const { Blog, User } = require('./model')

!(async function () {

  // 建立使用者
  const zhangsan = await User.create({
    userName: 'zhangsan',
    password: '123',
    nickName: '張三'
  })

  // insert into users (...) values (...)
  console.log('zhangsan: ', zhangsan.dataValues)
  const zhangsanId = zhangsan.dataValues.id

  const lisi = await User.create({
    userName: 'lisi',
    password: '123',
    nickName: '李四'
  })
  const lisiId = lisi.dataValues.id


  // 建立部落格
  const blog1 = await Blog.create({
    title: '標題1',
    content: '內容1',
    userId: zhangsanId
  })
  console.log('blog1', blog1.dataValues)

  const blog2 = await Blog.create({
    title: '標題2',
    content: '內容2',
    userId: zhangsanId
  })

  const blog3 = await Blog.create({
    title: '標題3',
    content: '內容3',
    userId: lisiId
  })

  const blog4 = await Blog.create({
    title: '標題4',
    content: '內容4',
    userId: lisiId
  })

})()
  1. sequelize 結合 mysql 實現查詢,select.js 程式碼如下所示:
const { User, Blog } = require('./model')

!(async function () {
  // 查詢一條記錄
  // const zhangsan = await User.findOne({
  //   where: {
  //       userName: 'zhangsan'
  //   }
  // })
  // console.log('zhangsan', zhangsan.dataValues )

  // 查詢特定的列
  // const zhangsanName = await User.findOne({
  //   attributes: ['userName', 'nickName'],
  //   where: {
  //     userName: 'zhangsan'
  //   }
  // })
  // console.log('zhangsanName', zhangsanName.dataValues)

  // 查詢一個列表
  // const zhangsanBlogList = await Blog.findAll({
  //   where: {
  //     userId: 1
  //   },
  //   order: [
  //     ['id', 'desc']
  //   ]
  // })
  // console.log('zhangsanBlogList', zhangsanBlogList.map(blog => blog.dataValues))

  // 分頁
  // const blogPageList = await Blog.findAll({
  //   limit: 2, // 限制本次查詢 2 條,每頁顯示的條數
  //   offset: 2, // 跳過多少條,從第幾頁開始
  //   order: [
  //     ['id', 'desc']
  //   ]
  // })
  // console.log('blogPageList', blogPageList.map(blog => blog.dataValues))

  // 查詢總數
  // const blogListAndCount = await Blog.findAndCountAll({
  //   limit: 2,
  //   offset: 2,
  //   order: [
  //     ['id', 'desc']
  //   ]
  // })
  // console.log('blogListAndCount', 
  //           blogListAndCount.count, // 所有的總數,不考慮分頁
  //           blogListAndCount.rows.map(blog => blog.dataValues)
  //         )

  // 連表查詢 1
  // 先有 blog,後有 user
  // const blogListWithUser = await Blog.findAndCountAll({
  //   order: [
  //     ['id', 'desc']
  //   ],
  //   include: [
  //     {
  //       model: User,
  //       attributes: ['userName', 'nickName'],
  //       where: {
  //         userName: 'zhangsan'
  //       }
  //     }
  //   ]
  // })
  // console.log('blogListWithUser',
  //           blogListWithUser.count,
  //           blogListWithUser.rows.map(blog => {
  //             const blogVal = blog.dataValues
  //             blogVal.user = blogVal.user.dataValues
  //             return blogVal
  //           })
  //         )


  // 連表查詢 2
  const userListWithBlog = await User.findAndCountAll({
    attributes: ['userName', 'nickName'],
    include: [
      {
        model: Blog
      }
    ]
  })
  console.log('userListWithBlog',
            userListWithBlog.count,
            userListWithBlog.rows.map(user => {
              const userVal = user.dataValues
              userVal.blogs = userVal.blogs.map(blog => blog.dataValues)
              return userVal
            })
        )

})()
  1. sequelize 結合 mysql 實現修改,update.js 程式碼如下所示:
const { User } = require('./model')

!(async function () {

  const updateRes = await User.update({
    nickName: '張三1'
  }, {
    where: {
      userName: 'zhangsan'
    }
  })
  console.log('updateRes', updateRes[0] > 0)

})()
  1. sequelize 結合 mysql 實現刪除,delete.js 程式碼如下所示:
const { User, Blog } = require('./model')

!(async function () {
  // 刪除一條部落格
  const deleteBlogRes = await Blog.destroy({
    where: {
      id: 4
    }
  })
  console.log('deleteBlogRes', deleteBlogRes > 0)

  // 刪除一個使用者
  const deleteUserRes = await User.destroy({
    where: {
      id: 1
    }
  })
  console.log('deleteUserRes', deleteUserRes)

})()

相關文章