我在system.js中有一个名为“addNumbers”的已保存函数,它有两个参数:
function addNumbers( a , b ) {
return a + b;
}
我希望通过添加由用户输入的2个数字通过C#执行此功能。到目前为止,我有以下代码:
MongoClient client = new MongoClient();
MongoServer server = client.GetServer();
MongoDatabase test = server.GetDatabase("test");
Console.WriteLine("Input two numbers: ");
string num1 = Console.ReadLine();
string num2 = Console.ReadLine();
BsonValue bv = test.Eval("addNumbers", num1, num2);
BsonValue bv1 = test.Eval(bv.AsBsonJavaScript.Code, num1, num2);
我做错了什么?因为没有显示总和
答案 0 :(得分:2)
所以我只是在当地做了一个测试。与
db.system.js.save({
_id : "myAddFunction" ,
value : function (x, y){ return x + y; }
});
我有一个保存的函数myAddFunction。稍微修改一下代码:
MongoClient client = new MongoClient("mongodb://192.168.122.1/test");
MongoServer server = client.GetServer();
MongoDatabase test = server.GetDatabase("test");
Console.WriteLine("Input two numbers: ");
string num1Str = Console.ReadLine();
string num2Str = Console.ReadLine();
int num1 = int.Parse(num1Str);
int num2 = int.Parse(num2Str);
BsonValue bv = test.Eval("myAddFunction");
BsonValue bv1 = test.Eval(bv.AsBsonJavaScript.Code, num1, num2);
Console.WriteLine(bv1);
现在我显示了正确的结果。
答案 1 :(得分:0)
如果您想运行存储的函数并返回结果,请按照以下方式操作:
var num1 = Console.ReadLine();
var num2 = Console.ReadLine();
var command = new JsonCommand<BsonDocument>($"{{ eval: \"addNumbers({num1},{num2})\" }}");
var result = db.RunCommand(command)["retval"].ToInt32();