Mongoose: schema.pre('save') MyModel.update () рджреНрд╡рд╛рд░рд╛ рдЯреНрд░рд┐рдЧрд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛

рдХреЛ рдирд┐рд░реНрдорд┐рдд 16 рдЬреБрд▓ре░ 2011  ┬╖  11рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: Automattic/mongoose

example.js:

var mongoose = require('mongoose')
  , Schema = mongoose.Schema

mongoose.connect('mongodb://localhost/test')

var Thing = new Schema({
  title : String,
  content : String
})

Thing.pre('save', function(next){
  console.log("saving: %s (%s)", this.title, this.content)
  next()
})

var MyThing = mongoose.model('Thing', Thing)

var example = new MyThing({
  title : 'foo',
  content : 'bar'
})

example.save(function(err){
  MyThing.update({title:'foo'},{content:'baz'}, function(err, rs){
    console.log(rs)
  })  
})

рдЖрдЙрдЯрдкреБрдЯ:

$ node example.js 
saving: foo (bar)
1

рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдмрдЪрдд рджреНрд╡рд╛рд░рд╛ рдкреВрд░реНрд╡ рдЯреНрд░рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрджреНрдпрддрди рдирд╣реАрдВред

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдпрд╣ рдПрдХ рдмрдЧ рдирд╣реАрдВ рд╣реИред рдкреНрд░реА рд╕реЗрд╡ рдПрдХ рд╣реБрдХ рд╣реИ рдЬреЛ рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдкрд░ рдлрд╛рдпрд░ рдХрд░рддрд╛ рд╣реИ рдЬрдм рдЙрдирдХреА рд╕реЗрд╡ рдореЗрдердб рдХреЛ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рди рдХрд┐ рдореЙрдбрд▓ рдкрд░ рдЬрдм рдЕрдкрдбреЗрдЯ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред

Model.update рдЪрд▓рд┐рдП рдЖрдк рд╕реАрдзреЗ mongodb рдХреЛ рдПрдЯреЙрдорд┐рдХ $set рдСрдкрд░реЗрд╢рдВрд╕ рднреЗрдЬрддреЗ рд╣реИрдВред

рд╕рднреА 11 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдпрд╣ рдПрдХ рдмрдЧ рдирд╣реАрдВ рд╣реИред рдкреНрд░реА рд╕реЗрд╡ рдПрдХ рд╣реБрдХ рд╣реИ рдЬреЛ рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдкрд░ рдлрд╛рдпрд░ рдХрд░рддрд╛ рд╣реИ рдЬрдм рдЙрдирдХреА рд╕реЗрд╡ рдореЗрдердб рдХреЛ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рди рдХрд┐ рдореЙрдбрд▓ рдкрд░ рдЬрдм рдЕрдкрдбреЗрдЯ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред

Model.update рдЪрд▓рд┐рдП рдЖрдк рд╕реАрдзреЗ mongodb рдХреЛ рдПрдЯреЙрдорд┐рдХ $set рдСрдкрд░реЗрд╢рдВрд╕ рднреЗрдЬрддреЗ рд╣реИрдВред

рдпрд╣ рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИ рдЬреЛ рдореИрдВ рдЪрд╛рд╣рддрд╛ рд╣реВрдБ; рд╡рд┐рд░рд▓ рдбреЗрдЯрд╛ рдХреЛ рдКрдкрд░ рдХрд░рддреЗ рд╕рдордп рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╕рд╣рд╛рдпрдХред

@aheckman рдореИрдВ рд╣реВрдВ , рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ UI рдореЗрдВ рдЬрд╣рд╛рдВ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ $.ajax рдлреЙрд░реНрдо рдЕрдкрдбреЗрдЯ рд╣реИрдВ рдЬреИрд╕реЗ рдкреЛрд╕реНрдЯ рд░реВрдЯ рдкрд░ req.body._id рдХрд░рдХреЗ, рдХреБрдЫ рдкреНрд░рдХрд╛рд░ рдХреА рдкреВрд░реНрд╡ рд╡рд┐рдзрд┐ рдЖрд╕рд╛рди рд╣реЛрдЧреАред рдПрдХ рдЙрджрд╛рд╣рд░рдг рдЙрдкрдпреЛрдЧ рдХрд╛ рдорд╛рдорд▓рд╛ рд╣реИ рдЬрдм рдЖрдк рджреЛ рдирдВрдмрд░ рд╕рдмрдорд┐рдЯ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдЖрдк рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдореЙрдбрд▓ рдореЗрдВ рдХреБрд▓ рдХреА рдЧрдгрдирд╛ рдХреЗ рд▓рд┐рдП pre('save') ред

рд╢рд╛рдпрдж pre('update') ofc

рдореИрдВрдиреЗ рдЗрд╕реЗ рднреА рджреЗрдЦрд╛ рд╣реИ рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдЬреЛрдбрд╝рдиреЗ рд▓рд╛рдпрдХ рд╡реГрджреНрдзрд┐ рдирд╣реАрдВ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред

рдореИрдВрдиреЗ рдЕрд╣реЗрдХрдореИрди рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рдЬрд╣рд╛рдВ рдореБрдЭреЗ рдЕрдкрдиреЗ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ updatedOn рджрд┐рдирд╛рдВрдХ рдлрд╝реАрд▓реНрдб рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЬрд╣рд╛рдВ рдСрдбрд┐рдЯрд┐рдВрдЧ рдХреБрдЫ рдРрд╕рд╛ рд╣реИ рдЬрд┐рд╕реЗ рдореИрдВ рдорд┐рдбрд▓рд╡реЗрдпрд░ рд╕реНрддрд░ рдкрд░ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдЧрдВрдз рдХрд░рддрд╛ рд╣реИред

рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдПрдХ рддрд┐рдерд┐ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдирд╛ рддрддреНрдХрд╛рд▓ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╕рдВрд╡реЗрджрдирд╢реАрд▓ рд╣реИ, рдЬреЛ рдореЛрдВрдЧреЛрдбрдм рдореЗрдВ рд╕рд╣реЗрдЬрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдЪрд▓рддреА рддрд┐рдерд┐ рдФрд░ рд╕рдордп рд╡рд┐рдВрдбреЛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЕрджреНрдпрддрди рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рд▓реЛрдб рдХрд░рдиреЗ рдХреА рдкреГрд╖реНрдарднреВрдорд┐ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╣реИред рдореИрдВ рдпрд╣ рдирд╣реАрдВ рдХрд╣ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдмрд╣реБрдд рд╕рдордп рдмрд╣рд╛рд╡ рд╣реЛрдЧрд╛ рд▓реЗрдХрд┐рди рдЕрд╣реЗрдХрдореИрди рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдмрдирд╛рдо pre('update') рдореЗрдВ рдмрдЪрдд рд╣реЛрдиреЗ рддрдХ рдЕрдзрд┐рдХ рдмрд╣рд╛рд╡ рд╣реЛрдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИред

рдореБрдЭреЗ рдпрд╣рд╛рдВ рдХреБрдЫ рдорд┐рдбрд▓рд╡реЗрдпрд░ рд╡рд┐рдХрд▓реНрдк рджреЗрдЦрдирд╛ рдЕрдЪреНрдЫрд╛ рд▓рдЧреЗрдЧрд╛ред

рддреЛ рдЙрдкрд╛рдп рдХреНрдпрд╛ рд╣реИ? рдореБрдЭреЗ рдЙрдореНрдореАрдж рдереА рдХрд┐ рдкреНрд░реА ('рд╕реЗрд╡') рдиреЗ рдЕрдкрдбреЗрдЯ рдкрдХрдбрд╝реЗ рд╣реЛрдВрдЧреЗ, рдЬреЛ рд╢рдмреНрджрд╛рд░реНрде рд░реВрдк рд╕реЗ рдореБрдЭреЗ рдмрдЪрд╛рддрд╛ рд╣реИред рдЪреВрдВрдХрд┐ рдЕрдкрдбреЗрдЯ рдмрд╣реБрдд рдЖрдо рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рд╕реЗрд╡ рд╣реБрдХ рдХреЛ рдмрд╣реБрдд рдХрдо рдореВрд▓реНрдпрд╡рд╛рди рдмрдирд╛рддрд╛ рд╣реИред

рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХреЛрдИ рдЕрднреА рднреА рдЗрд╕реЗ рджреЗрдЦ рд░рд╣рд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВ, рд▓реЗрдХрд┐рди рдореИрдВрдЧреЛрдЬрд╝ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рдХреЛ рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдВ -
рдиреЗрд╡рд▓рд╛
_рдиреЛрдЯреНрд╕ рдСрди рдлрд╛рдЗрдВрдбрдПрдВрдбрдЕрдкрдбреЗрдЯ ()_ рд╕реЗрдХреНрд╢рди рдХреЗ рддрд╣рдд рдореБрджреНрджреЛрдВ/964 рдХрд╛ рд╕рдВрджрд░реНрдн рджреЗрддрд╛ рд╣реИ рдЬреЛ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХрд╛рдо рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдЙрдореНрдореАрдж рд╣реИ рдХреА рд╡реЛ рдорджрдж рдХрд░рджреЗ! :)

рдпрд╣ рдмрдХрд╡рд╛рд╕ рд╣реИред рд╣рдо рд╕реЗрдЯрд░реНрд╕ рдореЗрдВ рдХреБрдЫ рднреА async рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред рдмреЗрд╡рдХреВрдл

рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкреБрд░рд╛рдирд╛ рдзрд╛рдЧрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдареАрдХ рд╣реИред рдРрд╕реЗ рдкреНрд░реА рд╣реИрдВ рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕реЗ рдЗрдВрдЯреБрдЕрдк рдХрд░рддреЗ рд╣реИрдВ рдпрд╛ рдкреЛрд╕реНрдЯ рдХреЗ рдмрд╛рдж рд╕реЗ рдЗрд╕рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдпрд╣ рд╕рдм рдЕрдЪреНрдЫрд╛ рдЯреНрд░реЗрдВрдЯ рд╣реИ, рдореИрдВрдиреЗ рдЖрдЧреЗ рдмрдврд╝рдХрд░ рдЕрдкрдиреЗ рдХреЛрдб рдХреЛ рдПрдХ рдЦреЛрдЬрдмреАрдЖрдИрдбреА тАЛтАЛрдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкреБрдирд░реНрдЧрдард┐рдд рдХрд┐рдпрд╛ рдФрд░ рдлрд┐рд░ рдмрд╛рдж рдореЗрдВ рд╕рд╣реЗрдЬрд╛, рдЗрд╕рд▓рд┐рдП рдкреВрд░реНрд╡ рд╕реЗрд╡ рд╣реБрдХ рдЯреВ рд╕реЙрд▓реНрдЯ рдПрдХ рдкрд╛рд╕рд╡рд░реНрдб рдЕрднреА рднреА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╡рд╣реА рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдкреНрд░реА рдЕрдкрдбреЗрдЯ рд╣реБрдХ рднреА рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛, рдлрд┐рд░ рднреА рдСрдкрд░реЗрд╢рди рдХреА рд╕реЗрд╡рд╛ рдХреЗ рд▓рд┐рдП рджреЛ рдкреНрд░рд╢реНрди рд╣реЛрдВрдЧреЗ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХреЛ рдбреЗрдЯрд╛ рдкрдврд╝рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдЬрд╛рдВрдЪрдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдпрд╣ рд╕рдВрд╢реЛрдзрд┐рдд рд╣реИ рдпрд╛ рдирд╣реАрдВ

#964 рдХреЛ рдЯреИрдЧ рдХрд░рдирд╛ рдФрд░ рд░реБрдЪрд┐ рдХреЗ рд▓рд┐рдП рдЙрдЫрд▓рдирд╛ред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

tarun1793 picture tarun1793  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

Soviut picture Soviut  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

Igorpollo picture Igorpollo  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

adamreisnz picture adamreisnz  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

wlingke picture wlingke  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ