msgpack-lite
msgpack-lite copied to clipboard
Noty support encode/decode for MongoDB ObjectId.
// This is a mongodb document.
var doc = {
_id: ObjectId,
....
}
var encodeObjectId = msgpack.encode(doc._id)
var decodeObjectId = msgpack.decode(encodeObjectId)
decodeObjectId
is { _bsontype: 'ObjectID', id: 'XOúH§%¤ÿ\u0016\u001a' }
const msgpack = require('msgpack-lite');
const mongoose = require('mongoose');
const ObjectId = mongoose.Types.ObjectId;
const codec = msgpack.createCodec({});
// Encode ObjectId
codec.addExtPacker(0x3F, ObjectId, (value) => {
return msgpack.encode(value.toString());
});
// Decode ObjectId
codec.addExtUnpacker(0x3F, (value) => {
let id = msgpack.decode(value);
return new ObjectId(id);
});
// After use that
msgpack.encode(data, {codec: codec});
msgpack.decode(data, {codec: codec});
Convert ObjectID to String
var encodeObjectId = msgpack.encode(doc._id.toString())
Or .lean() your query before .exec()