Этот модуль глобально внедряет экземпляр $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()
// явно $eq
const articles = await this.$content('articles').where({ title: { $eq: 'Home' } }).fetch()
// $gt
const articles = await this.$content('articles').where({ age: { $gt: 18 } }).fetch()
// $in
const 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
- Тип:
Выполняет полнотекстовый поиск по полю. значение необязательное, в этом случае поле является значением и поиск будет выполняться по всем определенным полнотекстовым полям поиска.
Поля, по которым вы хотите искать, должны быть определены в опциях, чтобы их можно было проиндексировать, взгляните на конфигурацию.
// Поиск по полю title
const 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 контента в разработке.