fixes to saved search

This commit is contained in:
zadam
2020-08-20 15:23:24 +02:00
parent d037420acb
commit 0b38e24185
8 changed files with 32 additions and 27 deletions

View File

@@ -23,7 +23,7 @@ function searchNotes(req) {
}
}
function searchFromNote(req) {
async function searchFromNote(req) {
const note = repository.getNote(req.params.noteId);
if (!note) {
@@ -44,15 +44,16 @@ function searchFromNote(req) {
return [];
}
let noteIds;
let searchResultNoteIds;
try {
if (json.searchString.startsWith('=')) {
const relationName = json.searchString.substr(1).trim();
noteIds = searchFromRelation(note, relationName);
searchResultNoteIds = await searchFromRelation(note, relationName);
} else {
noteIds = searchService.searchForNoteIds(json.searchString);
searchResultNoteIds = searchService.searchNotes(json.searchString)
.map(sr => sr.noteId);
}
}
catch (e) {
@@ -62,16 +63,17 @@ function searchFromNote(req) {
}
// we won't return search note's own noteId
noteIds = noteIds.filter(noteId => noteId !== note.noteId);
// also don't allow root since that would force infinite cycle
searchResultNoteIds = searchResultNoteIds.filter(resultNoteId => !['root', note.noteId].includes(resultNoteId));
if (noteIds.length > 200) {
noteIds = noteIds.slice(0, 200);
if (searchResultNoteIds.length > 200) {
searchResultNoteIds = searchResultNoteIds.slice(0, 200);
}
return noteIds.map(noteCacheService.getNotePath).filter(res => !!res);
return searchResultNoteIds;
}
function searchFromRelation(note, relationName) {
async function searchFromRelation(note, relationName) {
const scriptNote = note.getRelationTarget(relationName);
if (!scriptNote) {
@@ -92,7 +94,7 @@ function searchFromRelation(note, relationName) {
return [];
}
const result = scriptService.executeNote(scriptNote, { originEntity: note });
const result = await scriptService.executeNote(scriptNote, { originEntity: note });
if (!Array.isArray(result)) {
log.info(`Result from ${scriptNote.noteId} is not an array.`);