我正在尝试对另一台服务器/数据库执行@DbLookup并不断收到“未定义”的返回消息。数据库存在,视图名称正确,密钥正确,以及我尝试返回的列。我有读者访问数据库。
我已经尝试了服务器/文件路径的所有这些组合,但似乎都没有:
var dbName = new Array(session.getServerName(), "my/folder/thisdb.nsf");
var dbName = session.getServerName() + "!!" + my\\folder\\thisdb.nsf;
var dbName = "CN=Server/OU=Name/O=This" + "!!" + my\\folder\\thisdb.nsf;
var dbName = [@DbName([0]), "my/folder/thisdb.nsf"];
我找到了这篇文章并尝试了大部分组合:
http://www.c-lutions.com/c-lutions/mcblog.nsf/dx/08242012095124AMJMMJ69.htm
我可以尝试其他任何组合吗?
谢谢!
答案 0 :(得分:3)
您的文件夹名称my folder
是否包含空格?这可能是挑战。我建议你减轻痛苦....
在目标数据库中创建一个XPage,在其上有一个带有@DbName()的计算字段作为公式,并查看返回的内容。除此之外,您的公式有一些问题(条目下面的注释):
var dbName = new Array(session.getServerName(), "my/folder/thisdb.nsf");
除非你的文件夹不是我的子文件夹,否则看起来不错。文件夹需要相对于数据目录。
var dbName = session.getServerName() + "!!" + my\\folder\\thisdb.nsf;
dbName必须是一个数组,这个不是。此外,文件名
周围没有引号var dbName = "CN=Server/OU=Name/O=This" + "!!" + my\\folder\\thisdb.nsf;
在这里:必须是一个数组,引用缺失。由于数据源语法使用以下(CN)格式:@Name("[CN]";@Subset(@DbName();1)+"!!....
var dbName = [@DbName([0]), "my/folder/thisdb.nsf"];
几乎就在那里。 @DbName()不接受参数,因此您可以写:var dbName = [@DbName()[0], "my/folder/thisdb.nsf"];
或使用var dbName = [@Subset(@DbName(),1), "my/folder/thisdb.nsf"];
您还可以查看great samples进行播放。
答案 1 :(得分:1)
确保第二台服务器位于第一台服务器信任的受信任服务器组中。出于安全原因,在任何服务器上运行的XPage(和LotusScript)如果不在同一个受信任的服务器组中,则无法访问数据库的内容。