Notes error: Entry not found in index when reading view entries
Notes error: Entry not found in index when reading view entries
我的 xPage SSJS 在行中失败:
viewEntry = view.getNext(viewEntry);
有错误
Notes error: Entry not found in index
我确实将此选项设置为 false,但没有帮助:
view.setAutoUpdate(false);
所以我怀疑它失败是因为用户由于 reader 访问权限集而无法访问下一个文档。所以这样的文档不能在视图中看到,但在 TOTALS 中。如何解决?
附带的问题是,如果 Domino 服务器崩溃,那么
这是我的代码:
var view:NotesView = database.getView("xxxxxxx");
view.setAutoUpdate(false);
var viewNav:NotesViewNavigator = view.createViewNav();
var viewEntry:NotesViewEntry = viewNav.getFirst();
while (viewEntry != null) {
if (viewEntry.isCategory()){
// I work with category entry data
} else if(viewEntry.isTotal()){
// I collect totals
} else {
// I work with view entry
}
var tmpEntry:NotesViewEntry = viewNav.getNext(viewEntry);
viewEntry.recycle();
viewEntry = tmpEntry;
}
行失败:viewNav.getNext(viewEntry)
Script interpreter error, line=1001, col=37: [TypeError] Exception occurred calling method NotesViewNavigator.getNext(lotus.domino.local.ViewEntry)
Notes error: Entry not found in index ((xxxxxxx))
tmpEntry:NotesViewEntry = viewNav.getNext(viewEntry);
如果当前条目或下一个条目无效,我该如何真正转到下一个条目?
验证在索引中找不到哪个条目可能也值得。它可能是第一个,具体取决于您的代码的上下文。例如,它可能已更新为从视图中移除。首先检查是否为空。 Reader 访问也可能是一个问题,如果您使用 ViewNavigator 工作,则访问有不同的原因。使用 try/catch 也可以验证您的假设 - sessionAsSigner(或 ODA 的本机会话)将有权访问下一个文档,这将允许记录以确认。确认原因后,您可以围绕它进行编码。
ViewEntry.isValid() 验证是否软删除或用户没有访问权限,如 ViewEntry 和 Document 的文档中所述,两者具有相同的方法。
使用视图导航器。如果用户无法访问该条目,那么使用 viewentry.getUniversalId()
进行简单检查将使 return 为空,因此您甚至可以在视图条目迭代中跳过它。
试试这个代码:
view.setAutoUpdate(false);
ViewNavigator nav = view.createViewNav();
ViewEntry entry = nav.getCurrent();
ViewEntry nextEntry = null;
while (entry != null) {
if (entry.isCategory()) {
nextEntry = nav.getNextSibling();
} else {
nextEntry = nav.getNext();
}
if (!entry.isTotal()) {
// do something with the entry
} else {
// skipped entry
}
//don't forget to recycle!
entry.recycle();
entry = nextEntry;
}
view.setAutoUpdate(true);
将 Ferry 的回答(提前获取下一个条目)与条目有效性检查相结合:https://www.ibm.com/support/knowledgecenter/en/SSVRGU_9.0.1/basic/H_ISVALID_PROPERTY_2176.html
那应该可以避免你的问题。此外,使用 try/catch 块来识别最后处理的文档是什么,并仔细查看它(和下一个)。它可能已损坏。
我的 xPage SSJS 在行中失败:
viewEntry = view.getNext(viewEntry);
有错误
Notes error: Entry not found in index
我确实将此选项设置为 false,但没有帮助:
view.setAutoUpdate(false);
所以我怀疑它失败是因为用户由于 reader 访问权限集而无法访问下一个文档。所以这样的文档不能在视图中看到,但在 TOTALS 中。如何解决?
附带的问题是,如果 Domino 服务器崩溃,那么
这是我的代码:
var view:NotesView = database.getView("xxxxxxx");
view.setAutoUpdate(false);
var viewNav:NotesViewNavigator = view.createViewNav();
var viewEntry:NotesViewEntry = viewNav.getFirst();
while (viewEntry != null) {
if (viewEntry.isCategory()){
// I work with category entry data
} else if(viewEntry.isTotal()){
// I collect totals
} else {
// I work with view entry
}
var tmpEntry:NotesViewEntry = viewNav.getNext(viewEntry);
viewEntry.recycle();
viewEntry = tmpEntry;
}
行失败:viewNav.getNext(viewEntry)
Script interpreter error, line=1001, col=37: [TypeError] Exception occurred calling method NotesViewNavigator.getNext(lotus.domino.local.ViewEntry)
Notes error: Entry not found in index ((xxxxxxx))
tmpEntry:NotesViewEntry = viewNav.getNext(viewEntry);
如果当前条目或下一个条目无效,我该如何真正转到下一个条目?
验证在索引中找不到哪个条目可能也值得。它可能是第一个,具体取决于您的代码的上下文。例如,它可能已更新为从视图中移除。首先检查是否为空。 Reader 访问也可能是一个问题,如果您使用 ViewNavigator 工作,则访问有不同的原因。使用 try/catch 也可以验证您的假设 - sessionAsSigner(或 ODA 的本机会话)将有权访问下一个文档,这将允许记录以确认。确认原因后,您可以围绕它进行编码。
ViewEntry.isValid() 验证是否软删除或用户没有访问权限,如 ViewEntry 和 Document 的文档中所述,两者具有相同的方法。
使用视图导航器。如果用户无法访问该条目,那么使用 viewentry.getUniversalId()
进行简单检查将使 return 为空,因此您甚至可以在视图条目迭代中跳过它。
试试这个代码:
view.setAutoUpdate(false);
ViewNavigator nav = view.createViewNav();
ViewEntry entry = nav.getCurrent();
ViewEntry nextEntry = null;
while (entry != null) {
if (entry.isCategory()) {
nextEntry = nav.getNextSibling();
} else {
nextEntry = nav.getNext();
}
if (!entry.isTotal()) {
// do something with the entry
} else {
// skipped entry
}
//don't forget to recycle!
entry.recycle();
entry = nextEntry;
}
view.setAutoUpdate(true);
将 Ferry 的回答(提前获取下一个条目)与条目有效性检查相结合:https://www.ibm.com/support/knowledgecenter/en/SSVRGU_9.0.1/basic/H_ISVALID_PROPERTY_2176.html
那应该可以避免你的问题。此外,使用 try/catch 块来识别最后处理的文档是什么,并仔细查看它(和下一个)。它可能已损坏。