summaryrefslogtreecommitdiff
path: root/src/mongo/scripting/mozjs/oid.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mongo/scripting/mozjs/oid.cpp')
-rw-r--r--src/mongo/scripting/mozjs/oid.cpp12
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()));