javascript - How to create global objects in MongoBD's V8 engine to be accessible via db.eval? -
i'm trying utilize mongodb server-side javascript in nodejs/node-mongodb-native project , interested how save custom functions in global context of mongodb , access them db.eval
script?
let's have next unit function:
var mydocumentutils = { dostuff: function (doc) { // stuff doc ... homecoming doc; } }
and have next javascript function stored in db.system.js
collection:
function processdocument (id) { var doc = db.mycollection.findone({ _id : objectid(id)}); doc = mydocumentutils.dostuff(doc); // need access global mydocumentutils object db.mycollection.save(doc); homecoming doc; };
i execute processdocument
function nodejs application following:
db.eval('processdocument(54382cb3233283cd3331ca1d)', function (err, doc) { if (err) throw err; });
so question how save mydocumentutils
in global mongodb v8 context accessible in db.eval function?
add sec parameter processdocument
below:
function processdocument (id, mydocumentutils) { var doc = db.mycollection.findone({ _id : objectid(id)}); doc = mydocumentutils.dostuff(doc); // need access global mydocumentutils object db.mycollection.save(doc); homecoming doc; };
then write db.eval()
way:
db.eval(function() { homecoming processdocument.apply(this, arguments); }, "54382cb3233283cd3331ca1d", mydocumentutils);
for environment, can add together phone call behind lastly parameter mydocumentutils.
append ---------------------
store below tow functions db.system.js
:
function getmydocumentutils() { homecoming mydocumentutils = { dostuff: function (doc) { // stuff doc ... homecoming doc; } }; } function processdocument (id) { var doc = db.mycollection.findone({ _id : objectid(id)}); var mydocumentutils = getmydocumentutils(); // added line doc = mydocumentutils.dostuff(doc); // need access global mydocumentutils object db.mycollection.save(doc); homecoming doc; };
then phone call db.eval()
original style.
javascript node.js mongodb node-mongodb-native
No comments:
Post a Comment