Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mongodb Meteor中的函数存储在何处以及如何存储?或者如何使用system.js?_Mongodb_Meteor - Fatal编程技术网

Mongodb Meteor中的函数存储在何处以及如何存储?或者如何使用system.js?

Mongodb Meteor中的函数存储在何处以及如何存储?或者如何使用system.js?,mongodb,meteor,Mongodb,Meteor,我需要一种方法来存储大量不同的函数,每个函数都有一个唯一的ID,可能还有一些其他属性,然后我可以查询这些属性并带回客户端或服务器使用 保存函数的唯一方法是使用MongoDB的system.js集合,但我无法通过Meteor访问它 当我尝试在这里实现解决方案时,我似乎可以保存一个函数,但我不知道如何将其恢复并运行: 嗯,我发现了一个非常非常丑陋的方法让它工作: 我将其放入/server/fixtures.js myDB = MongoInternals.defaultRemoteCollecti

我需要一种方法来存储大量不同的函数,每个函数都有一个唯一的ID,可能还有一些其他属性,然后我可以查询这些属性并带回客户端或服务器使用

保存函数的唯一方法是使用MongoDB的
system.js
集合,但我无法通过Meteor访问它

当我尝试在这里实现解决方案时,我似乎可以保存一个函数,但我不知道如何将其恢复并运行:


嗯,我发现了一个非常非常丑陋的方法让它工作:

我将其放入/server/fixtures.js

myDB = MongoInternals.defaultRemoteCollectionDriver().mongo.db;

systemJS = myDB.collection('system.js');

systemJS.save({
    _id: 'echoFunction',
    value : 'function(x) { return x; }'
  },
  function (err, inserted) {
    console.log("error: ", err);
    console.log("number of docs inserted: ", inserted);
  }
);

systemJS.save({
    _id : "myAddFunction" ,
    value : 'function (x, y){ return x + y; }'
  },
  function (err, inserted) {
    console.log("error: ", err);
    console.log("number of docs inserted: ", inserted);
  }
);

var arg = "10, 5";

var mongoFuncName='myAddFunction';

var string = 'db.loadServerScripts(); return ' + mongoFuncName+ '(' + arg + ');';

console.log(string);

myDB.eval(string, function (err, mongoFuncReturnData) {
  console.log("error: ", err);
  console.log("mongoFuncReturnData: ", mongoFuncReturnData);
});

// counting the number of functions in system.js
myDB.eval("db.system.js.count();", function (err, mongoFuncReturnData) {
  console.log("error: ", err);
  console.log("mongoFuncReturnData: ", mongoFuncReturnData);
});

// finding and retrieving a stored function via the _id
myDB.eval("db.system.js.findOne({_id: 'myAddFunction'});", function (err, mongoFuncReturnData) {
  console.log("error: ", err);
  console.log("mongoFuncReturnData: ", mongoFuncReturnData);
});
天哪,它真丑。我真的希望有更好的方法来做到这一点

我还担心的是,如果我实施了这种明显的黑客行为,当更新发生时,可能会严重危害我的系统更新

还要注意,函数定义仍然必须是字符串。如果它们不是字符串,则不会保存(只保存_id)

myDB = MongoInternals.defaultRemoteCollectionDriver().mongo.db;

systemJS = myDB.collection('system.js');

systemJS.save({
    _id: 'echoFunction',
    value : 'function(x) { return x; }'
  },
  function (err, inserted) {
    console.log("error: ", err);
    console.log("number of docs inserted: ", inserted);
  }
);

systemJS.save({
    _id : "myAddFunction" ,
    value : 'function (x, y){ return x + y; }'
  },
  function (err, inserted) {
    console.log("error: ", err);
    console.log("number of docs inserted: ", inserted);
  }
);

var arg = "10, 5";

var mongoFuncName='myAddFunction';

var string = 'db.loadServerScripts(); return ' + mongoFuncName+ '(' + arg + ');';

console.log(string);

myDB.eval(string, function (err, mongoFuncReturnData) {
  console.log("error: ", err);
  console.log("mongoFuncReturnData: ", mongoFuncReturnData);
});

// counting the number of functions in system.js
myDB.eval("db.system.js.count();", function (err, mongoFuncReturnData) {
  console.log("error: ", err);
  console.log("mongoFuncReturnData: ", mongoFuncReturnData);
});

// finding and retrieving a stored function via the _id
myDB.eval("db.system.js.findOne({_id: 'myAddFunction'});", function (err, mongoFuncReturnData) {
  console.log("error: ", err);
  console.log("mongoFuncReturnData: ", mongoFuncReturnData);
});