sequelize-paper-trail icon indicating copy to clipboard operation
sequelize-paper-trail copied to clipboard

hasPaperTrail is not a function - sequelize ^5.0.0-beta.13

Open matyaspeto opened this issue 6 years ago • 17 comments

Hi,

in this version of Sequelize, apparently the _.extend(sequelize.Model) has no effect. I tried to fix it in several way without any success :(

matyaspeto avatar Feb 12 '19 19:02 matyaspeto

Thanks for the heads up :) I'll check it out soon and see what I need to change to make it work, first need to work out a few bugs with the current library.

nielsgl avatar Mar 09 '19 14:03 nielsgl

@matyaspeto ok I got it working in a test version, I'll create a branch for it later today and try to push a beta version by tomorrow.

nielsgl avatar Mar 16 '19 15:03 nielsgl

@nielsgl I've been getting this error as well. I'm guessing that Sequelize v5 support wasn't included in 3.0.0-rc.6 (assuming this because of #74)?

jdgarvey avatar Apr 10 '19 20:04 jdgarvey

@nielsgl

@matyaspeto ok I got it working in a test version, I'll create a branch for it later today and try to push a beta version by tomorrow.

Any updates when this branch might be available/ready? I've been tasked with migrating from Sequelize 4 to 5 because of https://github.com/sequelize/sequelize/issues/8468.

rjw209 avatar Apr 11 '19 16:04 rjw209

@jdgarvey @rjw209 Sorry I was traveling a lot the past weeks, I plan on getting it updated this weekend. I'll release the library v3 with support for Sequelize v4 and then probably the library as v4 with support for Sequelize v5.

nielsgl avatar Apr 11 '19 18:04 nielsgl

I'm kind of confused. What does sequelize-paper-trail v3 add to make it sequelize v4 compatible? We've been using sequelize-paper-trail v2.4.2 with sequelize v4.43.2 for a while now without trouble. We're not power users, but this is news to me that it isn't v4 compatible.

createthis avatar Apr 26 '19 19:04 createthis

Any progress on releasing v4?

Wolvan avatar Apr 29 '19 12:04 Wolvan

@jdgarvey @rjw209 @Wolvan Can you try it with 3.0.0-rc.7, that should work with Sequelize v4.

nielsgl avatar May 03 '19 10:05 nielsgl

Correction, should work with Sequelize v5 👍

nielsgl avatar May 03 '19 13:05 nielsgl

@nielsgl Thanks for the update & clarification! I'm heads-down on another task at the moment, but will prioritize revisiting this as soon as I can carve out some time then will report back with any findings.

rjw209 avatar May 03 '19 13:05 rjw209

I'll be giving it a try on monday, thanks a lot though!

Wolvan avatar May 03 '19 18:05 Wolvan

Alright, so tried it out: Two things I noticed immediately:

You must have left a test variable or something in the exports in /dist/helpers.js:112:3 (see here I think). Trying to run that errors out with ReferenceError: test is not defined

I also noticed that rc.7 depends on sequelize 4.x and installs that as a dependency (which it probably uses instead of the project's sequelize 5)

The .hasPaperTrail function on models unfortunately is still undefined. This is my code:

sqlize.import(resolve(__dirname, "./models", "Users.js"));
const PaperTrail = papertrail.init(sqlize, {
    userModel: "Users",
    debug: commander.debug
});

PaperTrail.defineModels();

let models = await fs.readdir(resolve(__dirname, "./models"));
models.forEach(model => {
    log.debug("Importing Model '" + model + "'");
    const mdl = sqlize.import(resolve(__dirname, "./models", model));
    if (mdl.hasPaperTrail) mdl.Revisions = mdl.hasPaperTrail();
});

Breakpointing at Ln13 and using the debugger to verify hasPaperTrail's value gives me undefined

Wolvan avatar May 06 '19 06:05 Wolvan

You must have left a test variable or something in the exports in /dist/helpers.js:112:3 (see here I think). Trying to run that errors out with ReferenceError: test is not defined

Ok fixed this 👍

I also noticed that rc.7 depends on sequelize 4.x and installs that as a dependency (which it probably uses instead of the project's sequelize 5)

Moved the dependency to dev dependencies so that should fix this.

I'll try tonight to quickly test it to get it working.

nielsgl avatar May 06 '19 10:05 nielsgl

@Wolvan I think it's fixed now, at least the tests are passing with Sequelize v5. Released as 3.0.0-rc.8

nielsgl avatar May 06 '19 11:05 nielsgl

Alright, mdl.hasPaperTrail is now defined and successfully defines a Revision prop on the models. Haven't looked deeper into it yet, but it looks promising enough!

Wolvan avatar May 07 '19 14:05 Wolvan

Hi. I had this problem with sequelize v5.9.4 and sequelize-paper-trail v2.6.1 then I tried use rc version of sequelize-paper-trail for my project and error hasPaperTrail is not a function resolved! but new problems raised. this is my first init options: const paperTrail = PaperTrail.init(sequelize, { debug: true, userModel: 'user', exclude: [ 'createdAt', 'updatedAt' ], enableRevisionChangeModel: true, UUID: true, continuationKey: 'userId' })

when I tried to save a new user, user inserted to postgres but I gave this error in console: sql: 'INSERT INTO "Revisions" ("model","document","operation","documentId","revision","id","createdAt","updatedAt") VALUES ($1,$2,$3,$4,$5,$6,$7,$8) RETURNING *;' }, sql: 'INSERT INTO "Revisions" ("model","document","operation","documentId","revision","id","createdAt","updatedAt") VALUES ($1,$2,$3,$4,$5,$6,$7,$8) RETURNING *;' } (node:6688) UnhandledPromiseRejectionWarning: SequelizeDatabaseError: invalid input syntax for type uuid: "1" then I removed UUID: true from init options and tried again, so I gave this: Executing (default): INSERT INTO "Revisions" ("id","model","document","operation","documentId","revision","createdAt","updatedAt") VALUES (DEFAULT,$1,$2,$3,$4,$5,$6,$7) RETURNING *; Revision save error TypeError: Cannot read property 'diffChars' of undefined what should I doing? is this a bug? thanks a lot.

thantez avatar Jul 12 '19 12:07 thantez

Hi. I had this problem with sequelize v5.9.4 and sequelize-paper-trail v2.6.1 then I tried use rc version of sequelize-paper-trail for my project and error hasPaperTrail is not a function resolved! but new problems raised. this is my first init options: const paperTrail = PaperTrail.init(sequelize, { debug: true, userModel: 'user', exclude: [ 'createdAt', 'updatedAt' ], enableRevisionChangeModel: true, UUID: true, continuationKey: 'userId' })

when I tried to save a new user, user inserted to postgres but I gave this error in console: sql: 'INSERT INTO "Revisions" ("model","document","operation","documentId","revision","id","createdAt","updatedAt") VALUES ($1,$2,$3,$4,$5,$6,$7,$8) RETURNING *;' }, sql: 'INSERT INTO "Revisions" ("model","document","operation","documentId","revision","id","createdAt","updatedAt") VALUES ($1,$2,$3,$4,$5,$6,$7,$8) RETURNING *;' } (node:6688) UnhandledPromiseRejectionWarning: SequelizeDatabaseError: invalid input syntax for type uuid: "1" then I removed UUID: true from init options and tried again, so I gave this: Executing (default): INSERT INTO "Revisions" ("id","model","document","operation","documentId","revision","createdAt","updatedAt") VALUES (DEFAULT,$1,$2,$3,$4,$5,$6,$7) RETURNING *; Revision save error TypeError: Cannot read property 'diffChars' of undefined what should I doing? is this a bug? thanks a lot.

try passing UUID: true, in options

VasukiShayanaa avatar Sep 23 '21 07:09 VasukiShayanaa