OrientDB:在服务器端函数中访问查询结果数据
OrientDB: Accessing query result data in Server side function
OrientDB 允许创建服务器端 javascript 函数。
有什么方法可以访问服务器端 javascript 函数内的中间查询结果。例如。如果我 return 查询结果,我会按预期得到 json 响应数组。但是,如果我尝试在函数之间访问查询结果,例如:
var comps = db.query("SELECT code from Company");
db.begin();
for(var i=0; i<comps.length; i++){
var c = comps[i];
db.save({
"@class":"Temp",
col: c.code
});
}
db.commit();
return comps;
对于上述函数,我得到存储在列 "col" 中的空白值。
根据我的观察,OrientDb returns 上下文而不是函数内部的实际结果。
提前致谢。
根据您的评论 "OrientDb returns context instead of actual results inside the function" 我假设您正在使用 Java 8。重点是,OrientDB 的行为在 Java 8 和 Java 7 之间有所不同这方面(因为底层 Java 脚本引擎不同:Nashorn 与 Rhino)。有几个已知(相关)问题,例如参见 [=10=]。
将 c.code
替换为 c.field("code")
。
OrientDB 允许创建服务器端 javascript 函数。 有什么方法可以访问服务器端 javascript 函数内的中间查询结果。例如。如果我 return 查询结果,我会按预期得到 json 响应数组。但是,如果我尝试在函数之间访问查询结果,例如:
var comps = db.query("SELECT code from Company");
db.begin();
for(var i=0; i<comps.length; i++){
var c = comps[i];
db.save({
"@class":"Temp",
col: c.code
});
}
db.commit();
return comps;
对于上述函数,我得到存储在列 "col" 中的空白值。
根据我的观察,OrientDb returns 上下文而不是函数内部的实际结果。
提前致谢。
根据您的评论 "OrientDb returns context instead of actual results inside the function" 我假设您正在使用 Java 8。重点是,OrientDB 的行为在 Java 8 和 Java 7 之间有所不同这方面(因为底层 Java 脚本引擎不同:Nashorn 与 Rhino)。有几个已知(相关)问题,例如参见 [=10=]。
将 c.code
替换为 c.field("code")
。