После некоторого времени разработки приложения с PouchDB я начинаю свои первые попытки синхронизации с удаленным экземпляром CouchDB. Пока я синхронизируюсь только с CouchDB, предоставляемым устанавливаемым приложением OSX CouchDB.
Документы синхронизируются нормально, но у меня проблемы с определенным видом. Я проверил, что это действительно JS и не вижу ошибки.
Я храню каждое представление в своем собственном проектном документе, который, как я прочитал, является лучшей практикой.
Пока я пробовал:
- Удаление
toLowerCase()
(на самом деле нет причин, просто чтобы проверить)
- Перемещение испускаемого значения в собственную переменную
У других людей были проблемы с синхронизацией представлений из-за использования современных функций JS, но я считаю, что я написал свой с ES5, который я прочитал, это то, что требуется.
Вот код определения вида:
const ddoc = {
_id: '_design/title-only',
views: {
'title-only': {
map: function titleOnly(doc) {
if (doc.type && doc.type === 'song' && doc.title) {
emit(doc.title.toLowerCase(), {
id: doc._id,
title: doc.title,
authors: doc.authors,
starred: doc.starred || false,
labels: doc.labels || [],
createdAt: doc.createdAt,
});
}
}.toString(),
},
}
};
Я получаю сообщение об ошибке типа "compilation_error".
Вот сообщение об ошибке:
"Compilation of the map function in the 'title-only' view failed: Expression does not eval to a function. (function titleOnly(doc) {
if (doc.type && doc.type === 'song' && doc.title) {
emit(doc.title.toLowerCase(), {
id: doc._id,
title: doc.title,
authors: doc.authors,
starred: doc.starred || false,
labels: doc.labels || [],
createdAt: doc.createdAt,
});
}
})"
Любые указатели с благодарностью получены, спасибо.