sequelize 增删改查

官网

1 增 create

1.1 build + save
const xiaoxu = User.build({ name: "小徐" });
console.log(xiaoxu instanceof User); // true
console.log(xiaoxu.name); // "小徐"

// build 方法仅创建一个对象,该对象表示可以映射到数据库的数据,并没有与数据库通信
await xiaoxu.save();// 使用 save 方法,将这个实例真正保存到数据库中。
1.2 create

create 方法,将上述的 build 和 save 合并为一个方法。

const res = await User.create({ name: "小徐" });
1.3 bulkCreate

bulkCreate 批量创建,接收的参数为数组对象。

const captains = await Captain.bulkCreate(
    [
      { name: '小徐' },
      { name: '小明' }
	]
);
console.log(captains.length); // 2
console.log(captains[0] instanceof Captain); // true
console.log(captains[0].name); // '小徐'
console.log(captains[0].id); // 1 // (或另一个自动生成的值)

默认情况下,bulkCreate 不会在要创建的每个对象上进行验证,而 create 可以做到。
为了使 bulkCreate 也运行这些验证,必须通过 validata: true 参数,但这会降低性能。

const Foo = sequelize.define('foo', {
  bar: {
    type: DataTypes.TEXT,
    validate: {
      len: [4, 6]
    }
  }
});

// 这不会引发错误,两个实例都将被创建
await Foo.bulkCreate([
  { name: 'abc123' },
  { name: 'name too long' }
]);

// 这将引发错误,不会创建任何内容,因为加上了 validdata: true,即会每一条都进行验证
await Foo.bulkCreate([
  { name: 'abc123' },
  { name: 'name too long' }
], { validate: true });

2 删 destory

await User.destory({ where:{ id: 1002 } });

truncate: true 销毁所有内容

await User.destory({ truncate: true });

3 改 update

await User.update({ age: 19}, { where:{ id: 1002 } });

4 查 finder

4.1 findAll

查询所有

// 查询所有用户
const users = await User.findAll()
const users = await User.findAll({ where: { id: 2 } })

// attributes 返回指定属性 
const users = await User.findAll({
      attributes: ['name', 'age']
})

// attributes + exclude 排除某些属性
const users = await User.findAll({
      attributes: { exclude: ['age'] }
})

// 使用嵌套数组进行重命名属性
const users = await User.findAll({
      attributes: ['name', ['age','age2']]
})
select * from User
select * from User where id = 2
select name, age from User/* 返回指定字段 */
select name, age as age2 from User/* as 重命名属性 */
4.2 findByPk

findByPk 方法使用提供的主键从表中仅获得一个条目.

const res = await User.findByPk(123);

if (res === null) {
  console.log('Not found!');
} else {
  console.log(res instanceof User); // true 它的主键是 123
}
4.3 findOne

findOne 方法获得它找到的第一个条目(它可以满足提供的可选查询参数).

const res = await User.findOne({ where: { id: '123' } });

if (res === null) {
  console.log('Not found!');
} else {
  console.log(res instanceof User); // true
  console.log(res.id); // '123'
}
4.4 findOrCreate

找不到就创建。返回值是一个实例(找到的实例或创建的实例)和一个布尔值,true 即为创建。

const [user, created] = await User.findOrCreate({
  where: { username: '小徐' },
  defaults: {
    job: 'Technical Lead JavaScript'
  }
});

console.log(user.username); // '小徐'
console.log(user.job); // 这可能是也可能不是 'Technical Lead JavaScript'
console.log(created); // 指示此实例是否刚刚创建的布尔值

if (created) { // created === true 即是创建
  console.log(user.job); // 这里肯定是 'Technical Lead JavaScript'
}
4.5 findAndCountAll

常用作处理与分页有关的查询,该方法是结合了 findAllcount 的便捷方法。

(1)当没有提供 group 时, findAndCountAll 方法返回一个具有两个属性的对象:

  • count :一个整数(与查询匹配的记录总数)
  • rows :一个数组对象(获得的记录)

(2)当提供了 group 时, findAndCountAll 方法返回一个具有两个属性的对象:

  • count - 一个数组对象(包含每组中的合计和预设属性)
  • rows - 一个数组对象(获得的记录)
const { count, rows } = await User.findAndCountAll({
  where: {
    title: {
      [Op.like]: 'foo%'
    }
  },
  offset: 10,
  limit: 2
});
console.log(count);
console.log(rows);
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Sequelize是一个Node.js中的ORM(Object-Relational Mapping)库,它允许我们使用JavaScript语言来执行数据库增删改查操作。以下是使用Sequelize进行增删改查的基本示例: 1. 增加数据: ```javascript const { Sequelize, DataTypes } = require('sequelize'); // 创建连接 const sequelize = new Sequelize('database', 'username', 'password', { host: 'localhost', dialect: 'mysql' }); // 定义模型 const User = sequelize.define('User', { name: { type: DataTypes.STRING, allowNull: false }, age: { type: DataTypes.INTEGER, allowNull: false } }); // 同步模型到数据库 sequelize.sync() .then(() => { // 创建新用户 return User.create({ name: 'John Doe', age: 30 }); }) .then(user => { console.log(user.toJSON()); }) .catch(error => { console.error('Error creating user:', error); }); ``` 2. 查询数据: ```javascript User.findAll() .then(users => { console.log(users); }) .catch(error => { console.error('Error retrieving users:', error); }); ``` 3. 更新数据: ```javascript User.update({ age: 35 }, { where: { name: 'John Doe' } }) .then(rowsUpdated => { console.log('Rows updated:', rowsUpdated); }) .catch(error => { console.error('Error updating user:', error); }); ``` 4. 删除数据: ```javascript User.destroy({ where: { name: 'John Doe' } }) .then(rowsDeleted => { console.log('Rows deleted:', rowsDeleted); }) .catch(error => { console.error('Error deleting user:', error); }); ``` 以上是使用Sequelize进行增删改查的基本示例,你可以根据自己的需求进行相应的调整和扩展。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值