πŸ”” Как Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΡΠΈΠ³Π½Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ mongoose для ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹?

Для настройки сигнализации Π² Mongoose, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ…ΡƒΠΊΠΈ событий, прСдоставляСмыС Mongoose.

НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ использования pre ΠΈ post Ρ…ΡƒΠΊΠΎΠ²:


        const mongoose = require('mongoose');
        const Schema = mongoose.Schema;

        const mySchema = new Schema({
            // поля вашСй схСмы
        });

        // pre Ρ…ΡƒΠΊ
        mySchema.pre('save', function(next) {
            // ваш ΠΊΠΎΠ΄ для выполнСния ΠΏΠ΅Ρ€Π΅Π΄ сохранСниСм Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°
            next();
        });

        // post Ρ…ΡƒΠΊ
        mySchema.post('save', function(doc) {
            // ваш ΠΊΠΎΠ΄ для выполнСния послС сохранСния Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°
        });

        const MyModel = mongoose.model('MyModel', mySchema);
    

Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Ρ…ΡƒΠΊΠΈ, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ 'findOneAndUpdate', 'findOneAndDelete' ΠΈ Ρ‚. Π΄., для настройки событий ΠΏΠ΅Ρ€Π΅Π΄ ΠΈ послС ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ.

Π”Π΅Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΡ‚Π²Π΅Ρ‚

Как Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΡΠΈΠ³Π½Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ mongoose

Бигнализация Π² Mongoose - это ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт Ρ€Π΅Π°Π³ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ события, происходящиС с вашими Π΄Π°Π½Π½Ρ‹ΠΌΠΈ Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… MongoDB. Π‘ сигнализациСй Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ дСйствия ΠΏΡ€ΠΈ сохранСнии, ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ, ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠΈ ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… событиях, связанных с вашими модСлями Π΄Π°Π½Π½Ρ‹Ρ….

Π§Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΡΠΈΠ³Π½Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ с использованиСм Mongoose, Π²Π°ΠΌ потрСбуСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ схСм ΠΈ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ Mongoose. НиТС я ΠΏΡ€ΠΈΠ²Π΅Π΄Ρƒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΡΠΈΠ³Π½Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ для события "сохранСниС" ΠΌΠΎΠ΄Π΅Π»ΠΈ с использованиСм Mongoose.


const mongoose = require('mongoose');

// ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ схСмы
const userSchema = new mongoose.Schema({
  name: String,
  age: Number
});

// ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ дСйствий ΠΏΠ΅Ρ€Π΅Π΄ сохранСниСм ΠΌΠΎΠ΄Π΅Π»ΠΈ
userSchema.pre('save', function(next) {
  // Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ дСйствия, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π΄ сохранСниСм ΠΌΠΎΠ΄Π΅Π»ΠΈ
  console.log('Π”ΠΎ сохранСния ΠΌΠΎΠ΄Π΅Π»ΠΈ...');
  next();
});

// Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ Π½Π° основС схСмы
const User = mongoose.model('User', userSchema);

// Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΈ сохранСниС Π΅Π³ΠΎ Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ…
const user = new User({
  name: 'John',
  age: 25
});

user.save(function(err) {
  if (err) {
    console.error(err);
  } else {
    console.log('ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ сохранСн.');
  }
});

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ опрСдСляСм ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΠΊ ΠΊΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ ΠΏΠ΅Ρ€Π΅Π΄ сохранСниСм ΠΌΠΎΠ΄Π΅Π»ΠΈ. Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС ΠΌΡ‹ просто Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌ сообщСниС Π² консоль, Π½ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π»ΡŽΠ±Ρ‹Π΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ дСйствия, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹.

ΠšΡ€ΠΎΠΌΠ΅ события "сохранСниС", Mongoose Ρ‚Π°ΠΊΠΆΠ΅ прСдоставляСт Π΄Ρ€ΡƒΠ³ΠΈΠ΅ события, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ "ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅", "ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅" ΠΈ "считываниС". Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΡΠΈΠ³Π½Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ для этих событий.

НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΊΠΎΠ΄Π° для настройки сигнализации для Π΄Ρ€ΡƒΠ³ΠΈΡ… событий:


// ДСйствия ΠΏΠ΅Ρ€Π΅Π΄ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠΎΠ΄Π΅Π»ΠΈ
userSchema.pre('update', function(next) {
  // Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ дСйствия ΠΏΠ΅Ρ€Π΅Π΄ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠΎΠ΄Π΅Π»ΠΈ
  console.log('Π”ΠΎ обновлСния ΠΌΠΎΠ΄Π΅Π»ΠΈ...');
  next();
});

// ДСйствия ΠΏΠ΅Ρ€Π΅Π΄ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠΎΠ΄Π΅Π»ΠΈ
userSchema.pre('remove', function(next) {
  // Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ дСйствия ΠΏΠ΅Ρ€Π΅Π΄ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠΎΠ΄Π΅Π»ΠΈ
  console.log('Π”ΠΎ удалСния ΠΌΠΎΠ΄Π΅Π»ΠΈ...');
  next();
});

// ДСйствия ΠΏΠ΅Ρ€Π΅Π΄ считываниСм ΠΌΠΎΠ΄Π΅Π»ΠΈ
userSchema.pre('findOne', function(next) {
  // Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ дСйствия ΠΏΠ΅Ρ€Π΅Π΄ считываниСм ΠΌΠΎΠ΄Π΅Π»ΠΈ
  console.log('Π”ΠΎ считывания ΠΌΠΎΠ΄Π΅Π»ΠΈ...');
  next();
});

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ эти ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΊΠΎΠ΄Π° ΠΈ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ… Π² соотвСтствии с вашими трСбованиями. Π’Π°ΠΆΠ½ΠΎ ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ сигнализация Π² Mongoose позволяСт Π²Π°ΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ дСйствия, Π½ΠΎ Π½Π΅ Π·Π°Π±Ρ‹Π²Π°ΠΉΡ‚Π΅ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ошибок.

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ рассмотрСли, ΠΊΠ°ΠΊ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΡΠΈΠ³Π½Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ с использованиСм Mongoose. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ сигнализации Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ Ρ€Π΅Π°Π³ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° события, происходящиС с вашими Π΄Π°Π½Π½Ρ‹ΠΌΠΈ Π² MongoDB. ΠŸΠΎΠΌΠ½ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ Mongoose прСдоставляСт мноТСство Π΄Ρ€ΡƒΠ³ΠΈΡ… возмоТностСй, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½Ρ‹Ρ… MongoDB.

Π’ΠΈΠ΄Π΅ΠΎ ΠΏΠΎ Ρ‚Π΅ΠΌΠ΅

ΠŸΠ ΠžΠ“Π ΠΠœΠœΠ˜Π ΠžΠ’ΠΠΠ˜Π• Π‘Π˜Π“ΠΠΠ›Π˜Π—ΠΠ¦Π˜Π˜ ΠœΠΠΠ“Π£Π‘Π’ 800 MONGOOSE МодСль AMG - 800

Mongoose AMG 700 ΠΏΠ΅Ρ€Π΅ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠ° ΠΏΡƒΠ»ΡŒΡ‚Π°

Как ΠΏΡ€ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ Π±Ρ€Π΅Π»ΠΎΠΊ сигнализации ΠœΠ°Π½Π³ΡƒΡΡ‚

ΠŸΠΎΡ…ΠΎΠΆΠΈΠ΅ ΡΡ‚Π°Ρ‚ΡŒΠΈ:

πŸ”” Как Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΡΠΈΠ³Π½Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ mongoose для ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹?