serializr
serializr copied to clipboard
Make "deserialize" promisifiable
deserialize
uses node-style callbacks, but fails to follow the rule "callback is the last argument". This prevents making use of util.promisify, which
Takes a function following the common error-first callback style, i.e. taking a
(err, value) => ...
callback as the last argument, and returns a version that returns promises.
I suggest moving callback to the end of argument list. This would also be more convenient: now you have to pass null for the callback in cases when you don't need async deserialization, but have to pass custom args.
You are correct, this is a change that needs to be made. Unfortunately, this would be a breaking change which would be tough to implement in version 1x of serializer.
I'm thinking version 2 should return a promise on serialization/deserialization instead of a callback. Thoughts?
Hello @razetdinov and @alexggordon, I have created below code for my typescript project and using it successfully without any issues. Its a generic await-able method.
static async Deserialize<T>(modelSchema: ClazzOrModelSchema<T>, json: any): Promise<T> { return new Promise<T>((resolve, reject) => { deserialize<T>(modelSchema, json, (error: any, result: T) => { if (error) reject(error); else resolve(result); }); }); }