В настоящее время я работаю над проектом стека MEAN, который использует mon goose в бэкэнде для функций, связанных с базой данных / моделью. По какой-то причине мне нужно использовать другой проект на основе python для вставки данных, но использовать mon goose для извлечения данных. Например, вот пример кода для запроса данных. Обычно, если я использую только mon goose в этой коллекции (все, что создано на основе схемы mon goose), этот код будет напрямую возвращать объект JSON, который можно использовать напрямую.
function getAssetByIds(assetIds) {
var deferred = Q.defer();
MarketImageModel
.find(
{ _id: { $in: assetIds } },
function (err, assets) {
if (err) {
deferred.reject(err);
} else {
deferred.resolve(assets);
}
}
);
return deferred.promise;
}
Однако, когда я использую ту же функцию для коллекции, созданной кодом python с использованием mongoengine, приведенный выше код вернет документ mon goose (что-то содержит другие значения, такие как isNew, errors, validate и _do c, который содержит на самом деле объект JSON, который я хочу) вместо объекта JSON. Я уже нашел решение, которое использует toObject () или Lean (), чтобы функция возвращала JSON напрямую, но я действительно боюсь масштабируемости.
Я чувствую, что если я использую python для вставки новых данных в базу данных в будущем, если mon goose вернет смесь документов JSON и Mon goose или просто mon goose документ. Один sh взломал бы систему, а другой попросил бы меня добавить Lean () ко всем функциям.
Кроме того, после поиска я нашел множество сообщений, в которых говорилось, что использование Lean () очень хорошо для производительности, и mon goose всегда возвращает документ mon goose не только результат запроса по умолчанию, но и почему мой предыдущий код выше вернул бы JSON напрямую. Если я пропустил некоторые настройки?
Я также проверил схему, используемую в mon goose, и схему, используемую в mongoengine, одинаковы для общих типов и имен. Для документов, хранящихся в базе данных, единственное отличие состоит в том, что данные mon goose created содержат значение _v.
Короче говоря, как правильно использовать mon goose с другими библиотеками для работы на той же дб?
Спасибо.