Sailjs/Waterline — есть ли способ получить ранее извлеченные объекты?

Я полагаю, что я видел, как кто-то написал о способе извлечения объектов в памяти из объекта модели, чтобы уменьшить доступ к БД. Может ли какой-нибудь орган посоветовать или поделиться со мной документом?

Я хотел бы иметь что-то вроде этого:

ModelA.create({...}).populate('modelBs').exec(function(err, instanceA) {
    // Do some nested things here, for example:
    instanceA.prop1 = someNewValue;
    instanceA.save(function(err, instanceAModified) {
       // I want to call some method from instanceAModified, to get all 'modelB' objects here, without accessing the DB once more.
    });
});

Заранее спасибо!


person Ducky    schedule 01.05.2014    source источник


Ответы (1)


Я считаю, что в новейшей версии Waterline .save() повторно заполнит любые ассоциации в своем обратном вызове. Но в любом случае вы всегда можете сохранить их в локальной переменной. Предполагая, что вы имели в виду find, а не create выше (поскольку populate ничего не делает с create):

ModelA.find({...}).populate('modelBs').exec(function(err, instanceA) {
    // Do some nested things here, for example:
    instanceA.prop1 = someNewValue;
    var modelBs = instanceA.modelBs;
    instanceA.save(function(err, instanceAModified) {
       // modelBs will still be available here.
    });
});
person sgress454    schedule 06.05.2014
comment
Понятно. Большое спасибо! - person Ducky; 11.08.2014