我有 2 个数据库,一个包含 XPage(移动 Web 应用程序,我们称之为数据库 A),另一个包含文档(数据库 b)。在我的测试单元中,一切正常。当我访问移动网络应用程序时,它可以完美地访问数据库 B 中的数据。但是当我将它们安装在客户端的服务器上时,Web 应用程序无法访问数据库 b。我检查了所有 ACL 条目,我认为这很好。页面中的错误:
执行 JavaScript 计算表达式时出错 脚本解释器错误,line=161,col=18:'ecrDB' 为空 在 [/sjs_common.jss].getCRViewDetails()
导致错误的脚本是:
函数 getCRViewDetails(){
158:
159: var ecrDB:NotesDatabase = ECR().mainDB;
160:变量视图详细信息:数组=新数组();
161: if(ecrDB.isOpen()){ //----- 这是错误行!
162: //var vw:NotesView = ecrDB.getView("草稿");
163: 变量 vw:NotesView = ecrDB.getView(mainConstants.VIEW_MAIN);
164: var docs:NotesDocumentCollection = vw.getAllDocumentsByKey(session.getEffectiveUserName(), true)
165: //var doc:NotesDocument = vw.getFirstDocument();
166:变量文档:NotesDocument = docs.getFirstDocument();
167:当(文档!=空){
168:查看详细信息.push([
169:doc.getItemValueString(“项目标题”),
170: doc.getItemValueString("CRNumber"),
171: 文档.getUniversalID()
172:]);
173: //打印(doc.getItemValueString("ProjectTitle") + ">>" + doc.getItemValueString("CRNumber"));
174: //doc = vw.getNextDocument(doc);
175:文档=文档.getNextDocument(文档);
176:}
177:}
这就是我访问数据库 b (ECRDB) 的方式:
函数 ECR(){
34:
35: //私有属性和方法------------------
36:
37: //设置文件
38: var SetupDoc:NotesDocument = database.getProfileDocument("(Setup)","");
39:
40: // 如果 sessionScope.ECRMainDBPath 已设置,则尝试连接到主数据库
41: if(sessionScope.containsKey("ECRMainDBPath") && sessionScope.containsKey("ECRDataRepPath")){
42:试试{
43: var ECRDB:NotesDatabase = session.getDatabase(
44: SetupDoc.getItemValueString("ECRMainServer"),
45: sessionScope.get("ECRMainDBPath"),
46:错误);
47: var DataRep:DataRepository = 新 DataRepository(
48: session.getDatabase(SetupDoc.getItemValueString("ECRMainServer"),
49: sessionScope.get("ECRDataRepPath"),
50:错误));
51:
52: var ecrSettingsDoc:NotesDocument = ECRDB.getProfileDocument("eCRSettings","");
53:}捕捉(e){
54:打印(e.message);
55: print("错误:无法访问 eCR Main。请检查 Anonymous 是否至少为 Reader Access");
56:ECRDB =空;
57:}
58:}否则{
59: //TODO 把这个放在 init()
60: if(!(view.getPageName().equals("/login.xsp") || view.getPageName().equals("/selectDivision.xsp"))){
61: context.redirectToPage("selectDivision.xsp");
62:}
63:}
64:
65:返回{
66:测试:“你好奥尔加!”,
67:
68: setupDoc : SetupDoc, //获取设置文档
69:
70:getSetupValue:函数(字段名){
71:返回 this.setupDoc.getItemValueString(fieldName);
72:},
73:
74: //获取 ECR 主数据库(内容数据库)
75:主数据库:ECRDB,
76:
77: //从主数据库中获取 eCRSettings 文档
78:主要设置:ecrSettingsDoc,
79:
80: //获取完整的数据库路径(带服务器)
81:getFullDBPath:函数(){
82:返回 this.mainDB.getServer() + "!!" + this.mainDB.getFilePath();
83:},
84:
85: //获取数据仓库对象
86:getDataRep:函数(){返回DataRep;},
87:
88: //get Data Repository //TODO 删除这个
89: //dataRep : DataRep.getDatabase(),
90:
91: //获取数据仓库的 URL
92: //getDataRepURLPath : DataRep.getURLPath,
93:
94:getDBURL:函数(){
95:返回 context.getUrl().toString().split(view.getPageName())[0];
96:},
97:
98:getSplittedOrder:函数(){
99:返回 this.mainSettings.getItemValueString("SplittedOrder");
100:}
101:};
102: }// ECR 声明结束
我不知道数据库可能存在什么问题。您能告诉我为了成功访问数据库 b 需要检查哪些因素吗?非常感谢!:)