Я пытаюсь найти подходящие методы для оптимизации моего приложения в отношении запросов против mongo и того, что передается обратно в пользовательский интерфейс.Оптимизация памяти Mongoose и Angular Memory
Если мы имеем простую схему, как описано ниже, где каждый профиль может иметь сотни разрешений объекта и тысячи разрешений полей:
// schema element in objectPermission.js
module.exports = mongoose.Schema({
object: String,
name: String,
readable: Boolean,
editable: Boolean
});
// schema element in fieldPermission.js
module.exports = mongoose.Schema({
allowCreate: Boolean,
allowDelete: Boolean,
allowEdit: Boolean,
allowRead: Boolean,
modifyAllRecords: Boolean,
object: String,
viewAllRecords: Boolean
});
// model definition in Profile.js
module.exports = mongoose.model('Profile', {
name: String,
modifiedDate: Date,
objectPermissions: [objectPermission],
fieldPermissions: [fieldPermission]
});
Первое состояние пользовательского интерфейса для просто покажите список профилей и разрешите пользователю щелкнуть и отобразить права объекта для выбранного профиля. Отсюда пользователь может щелкнуть любой профиль объекта и просмотреть разрешения для этого объекта.
Ничего сложного, и мой код работает по мере необходимости. Мой вопрос заключается в оптимизации запросов и управления памятью.
1) Я искал, но не смог найти, если вы можете иметь mongo, только возвратите документ Profile без каких-либо документов для сиблинга (objectPermissions и fieldPermissions), я считаю, что ответ не вызывает удивления, есть ли способ сделать это ,
2) Если ответ на 1 нет, то при возврате данных для начальной страницы целесообразно установить неиспользуемые массивы сестер равными нулю, чтобы мы не пропускали огромное количество неиспользуемых данных по проводу? например
function getProfiles(req, res, removeSiblings) {
dataService.findProfiles()
.then(function(records) {
if (removeSiblings) {
for (var i = 0; i < records.length; i++) {
records[i].objectPermissions = null;
records[i].fieldPermissions = null;
}
}
res.json(_buildSuccessObject('', records));
})
.catch(function(err) {
res.json(_buildErrorObject('Error getting profile records ' + err, null));
})
.done(function() {
console.log('Done Loading Profiles');
});
};
3) Или я должен создать меньший более оптимизированный документ для этой страницы сводки при сохранении данных в Монго и обеспечения этих двух документов хранятся в синхронизации?
4) Начальная полезная нагрузка данных в пользовательский интерфейс составляет около 500 КБ - я очень беспокоюсь об оптимизации?
Я - дурак! Я шел по трассе фильтра и потерялся в неправильной части документа, ** спасибо ** - это сработало отлично! Также спасибо вам за других указателей, я прочитаю и посмотрю, что еще я могу узнать! – Autobat