better error handling for search notes

This commit is contained in:
zadam 2020-01-13 19:35:06 +01:00
parent a79a063d17
commit 20fdeee048
3 changed files with 25 additions and 7 deletions

2
package-lock.json generated
View File

@ -1,6 +1,6 @@
{
"name": "trilium",
"version": "0.39.5",
"version": "0.40.0-beta",
"lockfileVersion": 1,
"requires": true,
"dependencies": {

View File

@ -110,6 +110,10 @@ class Note extends Entity {
async getJsonContent() {
const content = await this.getContent();
if (!content || !content.trim()) {
return null;
}
return JSON.parse(content);
}

View File

@ -29,8 +29,12 @@ async function searchFromNote(req) {
return [404, `Note ${req.params.noteId} has not been found.`];
}
if (note.isDeleted) {
return [400, `Note ${req.params.noteId} is deleted.`];
}
if (note.type !== 'search') {
return [400, '`Note ${req.params.noteId} is not search note.`']
return [400, `Note ${req.params.noteId} is not search note.`]
}
const json = await note.getJsonContent();
@ -41,18 +45,28 @@ async function searchFromNote(req) {
let noteIds;
if (json.searchString.startsWith('=')) {
const relationName = json.searchString.substr(1).trim();
try {
if (json.searchString.startsWith('=')) {
const relationName = json.searchString.substr(1).trim();
noteIds = await searchFromRelation(note, relationName);
noteIds = await searchFromRelation(note, relationName);
} else {
noteIds = await searchService.searchForNoteIds(json.searchString);
}
}
else {
noteIds = await searchService.searchForNoteIds(json.searchString);
catch (e) {
log.error(`Search failed for note ${note.noteId}: ` + e.message + ": " + e.stack);
throw new Error("Search failed, see logs for details.");
}
// we won't return search note's own noteId
noteIds = noteIds.filter(noteId => noteId !== note.noteId);
if (noteIds.length > 200) {
noteIds = noteIds.slice(0, 200);
}
return noteIds.map(noteCacheService.getNotePath).filter(res => !!res);
}