Этот модуль глобально внедряет экземпляр $content, это значит, что вы можете получить доступ к this.$content из любого места. В плагинах, asyncData, fetch, nuxtServerInit и Middleware, вы можете получить к нему доступ из context.$content.
Методы
$content(путь, параметры?)
путь- Тип:
string - По умолчанию:
/
- Тип:
параметры- Тип:
object - По умолчанию:
{} - Версия: v1.3.0
- Тип:
параметры.deep- Тип:
boolean - По умолчанию:
false - Версия: v1.3.0
- Получение файлов из поддиректорий
- Тип:
параметры.text- Тип:
boolean - По умолчанию:
false - Версия: v2.0.0
- Возвращает оригинальное содержание markdown в переменной
text
- Тип:
- Возвращает последовательность цепочек
Вы можете передать несколько аргументов:
$content('articles', params.slug)будет преобразовано в/articles/${params.slug}
путь может быть файлом или директорией. Если путь это файл, то fetch() вернет object, если директория, то вернет Array.
Все приведенные ниже методы могут быть объединены в цепочку и возвращать последовательность цепочек, кроме fetch, который возвращает Promise.
only(ключи)
ключи- Тип:
Array|string обязательное
- Тип:
Выберите подмножество полей.
const { title } = await this.$content('article-1').only(['title']).fetch()without(ключи)
keys- Тип:
Array|string обязательное
- Тип:
Исключите подмножество полей.
const { title, ...propsWithoutBody } = await this.$content('article-1').without(['body']).fetch()where(запрос)
запрос- Тип:
object обязательное
- Тип:
Отфильтровывает результаты по запросу.
Где запросы основаны на подмножестве синтаксиса запросов mongoDB, примеры: $eq, $ne, $gt, $gte, $lt, $lte, $in и т.д.
// неявно (предполагает оператор $eq)const articles = await this.$content('articles').where({ title: 'Home' }).fetch()// явно $eqconst articles = await this.$content('articles').where({ title: { $eq: 'Home' } }).fetch()// $gtconst articles = await this.$content('articles').where({ age: { $gt: 18 } }).fetch()// $inconst articles = await this.$content('articles').where({ name: { $in: ['odin', 'thor'] } }).fetch()Для фильтрации в объектах и массивах вам нужно включить nestedProperties, взгляните на конфигурацию.
const products = await this.$content('products').where({ 'categories.slug': { $contains: 'top' } }).fetch()const products = await this.$content('products').where({ 'categories.slug': { $contains: ['top', 'woman'] } }).fetch()Этот модуль использует LokiJS под капотом, вы можете взглянуть на примеры запросов.
sortBy(ключ, направление)
ключ- Тип:
string обязательное
- Тип:
направление- Тип:
string - Значение:
'asc'или'desc' - По умолчанию:
'asc'
- Тип:
Выполняет сортировку значений по ключу.
const articles = await this.$content('articles').sortBy('title').fetch()Может быть объединен в цепочку для сортировки по нескольким полям.
limit(кол-во)
кол-во- Тип:
string|number обязательное
- Тип:
Ограничивает количество результатов.
// получить только 5 статейconst articles = await this.$content('articles').limit(5).fetch()skip(кол-во)
кол-во- Тип:
string|number обязательное
- Тип:
Пропускает нужное количество результатов.
// получить следующие 5 статейconst articles = await this.$content('articles').skip(5).limit(5).fetch()search(поле, значение)
поле- Тип:
string обязательное
- Тип:
значение- Тип:
string
- Тип:
Выполняет полнотекстовый поиск по полю. значение необязательное, в этом случае поле является значением и поиск будет выполняться по всем определенным полнотекстовым полям поиска.
Поля, по которым вы хотите искать, должны быть определены в опциях, чтобы их можно было проиндексировать, взгляните на конфигурацию.
// Поиск по полю titleconst articles = await this.$content('articles').search('title', 'welcome').fetch()// Поиск по всем определенным полямconst articles = await this.$content('articles').search('welcome').fetch()surround(ярлык, настройки)
ярлык- Тип:
string обязательное
- Тип:
настройки- Тип:
object - По умолчанию:
{ before: 1, after: 1}
- Тип:
Получает предыдущий и следующий результаты по конкретному ярлыку.
Вы всегда получите массив фиксированной длины, заполненный документами или null.
const [prev, next] = await this.$content('articles') .only(['title', 'path']) .sortBy('date') .where({ isArchived: false }) .surround('article-2') .fetch()// Возвращает[ { title: 'Article 1', path: 'article-1' }, null // article-3 не существует]
search,limitиskipнеэффективны при использовании этого метода.
fetch()
- Возвращает:
Promise<object>|Promise<Array>
Завершает последовательность цепочек и собирает данные.
Пример
const articles = await this.$content('articles') .only(['title', 'date', 'authors']) .sortBy('date', 'asc') .limit(5) .skip(10) .where({ tags: 'testing', isArchived: false, date: { $gt: new Date(2020) }, rating: { $gte: 3 } }) .search('welcome') .fetch()Вы можете проверить, как использовать API контента в разработке.