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