hexojs / warehouse

JSON database

Home Page:https://hexojs.github.io/warehouse/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Potential mistake prevents model data modification in pre-save hooks

FlyingDR opened this issue · comments

Please consider this piece of model.js source:

warehouse/lib/model.js

Lines 161 to 164 in 067dd53

return execHooks(schema, 'pre', 'save', data).then(data => {
// Insert data
this.data[id] = result;
this.length++;

It can be seen, that pre save hook is received data variable and receives (potentially modified) data in then() (at the line 161), but ignores this information and inserts previously defined result variable instead at the line 163.

It effectively results into lack of ability to perform any data modifications in pre save hooks.

Same approach is used for updating and replacement of the model data.

Since logic of this piece of code remains untouched from the very beginning - I'm not sure if it is intentional (but rather confusing) decision or a bug that hides for a long time.

commented

I have searched the source code of Hexo, there are several pre-save or pre-remove hooks, but none of them modify the data. I'd rather believe that such behavior is intentional

To make it less confusing, maybe we could Object.freeze the data before exec Hooks