GithubHelp home page GithubHelp logo

Comments (8)

FarazPatankar avatar FarazPatankar commented on June 21, 2024 3

Hey @arnaudbesnier,

Any update on this issue? Also, if you guys have other issues to fix first, could you give me some pointers on how to fix this? I might pick it up myself.

from forest-express-mongoose.

Christilut avatar Christilut commented on June 21, 2024 2

Not entirely. When using findByIdAndUpdate for example, no document is ever loaded in mongoose so no hook can be executed.
But when doing a findOne call and then save the hooks will be executed. But I guess ForestAdmin implemented it with update calls. They could change it to save calls but it would incur extra overhead.

Personally I think it should work like the second method because hooks not firing is not developer friendly and a surprise for anyone working with this. Especially since we have no say in what an update call actually does, the hooks were the perfect place to add extra logic.

from forest-express-mongoose.

IgorDavy avatar IgorDavy commented on June 21, 2024 1

Actually the problem comes from Mongoose :
"Pre and post save() hooks are not executed on update()"
https://mongoosejs.com/docs/middleware.html

from forest-express-mongoose.

Christilut avatar Christilut commented on June 21, 2024

Is this going to get fixed? This completely prevents anyone from using Forest in combination with Mongoose right now. Sure someone might not use hooks but as soon as they do, Forest falls apart.

from forest-express-mongoose.

arnaudbesnier avatar arnaudbesnier commented on June 21, 2024

Hi @Christilut,
Thanks for the feedback, I am sorry but I cannot provide any ETA for a fix.

As a side note, I am not sure that Mongoose hooks are widely used as we have a lot of customers using Mongoose without any concern.

As the liana code is open source, it would make us very happy if you could contribute and fix it. 🤓

from forest-express-mongoose.

joshnissenbaum avatar joshnissenbaum commented on June 21, 2024

Really need this ASAP

from forest-express-mongoose.

slimee avatar slimee commented on June 21, 2024

All these hooks are working on Forest/mongoose. You can use the following examples inside a mongoose model definition file.
If you have an issue using hooks please provide a reproducing minimal code and versions in a new ticket.

To capture new record creation:

schema.pre('save', function () {
  console.log('YOU will save a user');
});
schema.post('save', function (doc) {
  console.log('YOU just saved a user', doc);
});
schema.pre('validate', function() {
  console.log('you will validate users');
});
schema.post('validate', function() {
  console.log('you just validated users');
});

To capture record update:

schema.pre('findOneAndUpdate', function () {
  console.log('YOU will update a user');
});
schema.post('findOneAndUpdate', function (doc) {
  console.log('YOU just updated a user', doc);
});

To capture record deletion (from list or from record details) from Forest:

schema.pre('remove', { query: true, document: false }, function () {
  console.log('YOU will query remove a user');
});
schema.post('remove', { query: true, document: false }, function (doc) {
  console.log('YOU just query removed a user', doc);
});

from forest-express-mongoose.

slimee avatar slimee commented on June 21, 2024

Solution provided in the last message.

from forest-express-mongoose.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.