Sequelize hinzufügen, löschen, ändern und prüfen
1 Erhöhungcreate
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.2create
create
Methode, die das obige Erstellen und Speichern in einer Methode kombiniert.
const res = await User.create({
name: "小徐" });
1.3bulkCreate
bulkCreate
Bei der Stapelerstellung ist der empfangene Parameter ein Array-Objekt.
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 // (或另一个自动生成的值)
Standardmäßig bulkCreate
wird keine Validierung für jedes zu erstellende Objekt durchgeführt, obwohl dies create
möglich ist .
Um diese Validierungen bulkCreate
auch , validata: true
muss der Parameter übergeben werden, was jedoch die Leistung verringert.
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 löschendestory
await User.destory({
where:{
id: 1002 } });
truncate: true
alle Inhalte zerstören
await User.destory({
truncate: true });
3 ändernupdate
await User.update({
age: 19}, {
where:{
id: 1002 } });
4 Scheckfinder
4.1findAll
alle abfragen
// 查询所有用户
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.2findByPk
findByPk
Methode, um mithilfe des bereitgestellten Primärschlüssels genau einen Eintrag aus der Tabelle abzurufen.
const res = await User.findByPk(123);
if (res === null) {
console.log('Not found!');
} else {
console.log(res instanceof User); // true 它的主键是 123
}
4.3findOne
findOne
Die Methode ruft den ersten gefundenen Eintrag ab (der möglicherweise die bereitgestellten optionalen Abfrageparameter erfüllt).
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.4findOrCreate
Erstellen, falls nicht gefunden. Der Rückgabewert ist eine Instanz (gefunden oder erstellt) und ein boolescher Wert, true für erstellt.
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.5findAndCountAll
Diese Methode wird häufig zur Bearbeitung von Abfragen im Zusammenhang mit der Paginierung verwendet und ist findAll
eine count
praktische Methode, die und kombiniert.
(1) Wenn nicht group
angegeben , findAndCountAll
gibt die Methode ein Objekt mit zwei Eigenschaften zurück:
count
: eine ganze Zahl (Gesamtzahl der Datensätze, die der Abfrage entsprechen)rows
: ein Array-Objekt (erhaltene Datensätze)
(2) group
Wenn findAndCountAll
die Methode bereitgestellt wird, gibt sie ein Objekt mit zwei Eigenschaften zurück:
count
- ein Array-Objekt (enthält Gesamt- und voreingestellte Eigenschaften in jeder Gruppe)rows
- ein Array-Objekt (erhaltene Datensätze)
const {
count, rows } = await User.findAndCountAll({
where: {
title: {
[Op.like]: 'foo%'
}
},
offset: 10,
limit: 2
});
console.log(count);
console.log(rows);