diff options
Diffstat (limited to 'src/mongo/scripting/mozjs/oid.cpp')
-rw-r--r-- | src/mongo/scripting/mozjs/oid.cpp | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/src/mongo/scripting/mozjs/oid.cpp b/src/mongo/scripting/mozjs/oid.cpp index afd6345441a..f2db6c80383 100644 --- a/src/mongo/scripting/mozjs/oid.cpp +++ b/src/mongo/scripting/mozjs/oid.cpp @@ -41,8 +41,10 @@ namespace mongo { namespace mozjs { -const JSFunctionSpec OIDInfo::methods[2] = { - MONGO_ATTACH_JS_CONSTRAINED_METHOD_NO_PROTO(toString, OIDInfo), JS_FS_END, +const JSFunctionSpec OIDInfo::methods[3] = { + MONGO_ATTACH_JS_CONSTRAINED_METHOD_NO_PROTO(toString, OIDInfo), + MONGO_ATTACH_JS_CONSTRAINED_METHOD_NO_PROTO(toJSON, OIDInfo), + JS_FS_END, }; const char* const OIDInfo::className = "ObjectId"; @@ -63,6 +65,12 @@ void OIDInfo::Functions::toString::call(JSContext* cx, JS::CallArgs args) { ValueReader(cx, args.rval()).fromStringData(str); } +void OIDInfo::Functions::toJSON::call(JSContext* cx, JS::CallArgs args) { + auto oid = static_cast<OID*>(JS_GetPrivate(args.thisv().toObjectOrNull())); + + ValueReader(cx, args.rval()).fromBSON(BSON("$oid" << oid->toString()), nullptr, false); +} + void OIDInfo::Functions::getter::call(JSContext* cx, JS::CallArgs args) { auto oid = static_cast<OID*>(JS_GetPrivate(args.thisv().toObjectOrNull())); |