Arhn - архитектура программирования

Mongoose — изменение содержимого записей результатов запроса

У меня есть набор записей с определенными специфическими свойствами, которые мне нужны для внутреннего использования, однако, когда я отправляю результаты обратно пользователю, я хотел бы, чтобы эти свойства были переупорядочены.

В частности, у меня есть массив geo, который я хотел бы разбить на свойства lat и lng.

Я использую Mongoose, и мне было интересно, есть ли способ использовать хук pre/post (я использовал его для «сохранения») для результатов записи во время поиска, чтобы изменить записи до того, как результаты будут возвращены.

Итак, в БД, если бы у нас было:

{
  name: 'Foo Bar',
  geo: [-0.12, 32.17]
},
{
  name: 'Pizza',
  geo: [-0.09, 34.51]
}

Результаты запроса будут такими:

{
  name: 'Foo Bar',
  lat: 32.17,
  lng: -0.12
},
{
  name: 'Pizza',
  lat: 34.51,
  lng: -0.09
}

Любые идеи, как это сделать?

05.05.2014

Ответы:


1

Да, в определении вашей модели используйте событие post-init для выполнения этого преобразования. Подробнее здесь: http://mongoosejs.com/docs/middleware.html#post

Schema
    .post('init', function (doc) {
        //do your stuff

    })
05.05.2014
  • Привет Биба, спасибо за ваш ответ. Не могли бы вы привести пример того, что я буду делать с объектом документа. Мне просто начать добавлять свойства и удалять то, что я не хочу, чтобы пользователь видел? Повлияет ли это на поиски? 06.05.2014
  • Doc — это ваш документ/модель, которую вам нужно изменить. Вы можете добавлять свойства по своему желанию, они не являются частью вашей модели Mongoose, если вы не объявите их так, но для того, что вам нужно, я подозреваю, что вы просто хотите отформатировать возвращаемый объект в соответствии с вашими спецификациями. .post-init вызывается для каждого результата поиска, передавая вам документ, чтобы сделать с ним то, что вам нужно. 06.05.2014
  • Новые материалы

    Коллекции публикаций по глубокому обучению
    Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

    Представляем: Pepita
    Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

    Советы по коду Laravel #2
    1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

    Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
    Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

    3 способа решить квадратное уравнение (3-й мой любимый) -
    1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

    Создание VR-миров с A-Frame
    Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

    Демистификация рекурсии
    КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..