Использование mon goose и mongoengine в одной базе данных - PullRequest
0 голосов
/ 29 мая 2020

В настоящее время я работаю над проектом стека 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 с другими библиотеками для работы на той же дб?

Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...