ОБНОВЛЕНИЕ 1: 5 голосов было получено, поэтому я отправил запрос на добавление функции: https://github.com/LearnBoost/mongoose/issues/2637
Пожалуйста, проголосуйте там +1, чтобы основная команда знала, что вам нужна эта функция.
ОБНОВЛЕНИЕ 2: См ответ ниже...
ОРИГИНАЛЬНАЯ ПОЧТА:
Допустим, я делаю "простой" запрос к коллекции ИЛИ получаю некоторые данные из службы REST и получаю массив объектов (не документов mongoose).
Эти объекты уже существуют в базе данных, но мне нужно преобразовать некоторые/все эти объекты в документы mongoose для отдельного редактирования/сохранения.
Я прочитал источник, и многое происходит, когда у mongoose есть данные из базы данных (заполнение, приведение в исходное состояние, инициализация и т.д.), Но, похоже, не существует метода для "раскрытия" этого внешнего мира.
Я использую следующее, но это просто кажется хакерским ($data
- простой объект):
// What other properties am I not setting? Is this enough?
var doc = new MyModel( $data );
doc.isNew = false;
// mimicking mongoose internals
// "init" is called internally after a document is loaded from the database
// This method is not documented, but seems like the most "proper" way to do this.
var doc = new MyModel( undefined );
doc.init( $data );
ОБНОВЛЕНИЕ: После дополнительных поисков я не думаю, что есть способ сделать это еще, и первый способ выше - ваша лучшая ставка (mongoose v3.8.8). Если кто-то еще заинтересован в этом, я сделаю запрос функции для чего-то вроде этого (оставьте комментарий или upvote, пожалуйста):
var doc = MyModel.hydrate( $data );