Вызов Sails Waterline Sync

Как я могу синхронно вызвать функцию Waterline с помощью Sails.js. Я попытался

var data = Model.findOne({ foo : "bar"});

и

sync(Model, findOne);
sync.fiber(function(){
    var data = Model.findOne({ foo : "bar"});
});

Ни один из них не работал у меня.

Как правильно это сделать?


person Muhammad Raihan Muhaimin    schedule 01.04.2014    source источник


Ответы (3)


Методы ватерлинии асинхронны, просты и понятны. Никакая команда не сделает их иначе. Вы обнаружите, что это относится ко многим методам Node, которые обращаются к внешним источникам данных (база данных, HTTP и т. д.).

Если вам нужно связать их более синхронно, вы можете использовать такой пакет, как async, чтобы сделать так.

person sgress454    schedule 01.04.2014

Я не уверен, что это возможно для водной линии. И я почти уверен, что это не намерение.

Model.findOne({ foo : "bar"}, function(err, result){
  var data = result;
});

Вышеупомянутое было бы лучше .... не боритесь с асинхронным характером nodejs. Только потом будет больно.

person InternalFX    schedule 01.04.2014
comment
Но почему? Есть ли польза? - person Daveman; 06.08.2015

Мне жаль, что этот ответ слишком запоздал, вы, вероятно, уже нашли решение, но для будущих ссылок здесь вам может понадобиться сделать lodash глобальным, обновив /config/globals.js и установив _: true, тогда вы отредактируете /config/bootstrap.js со следующим

global.sync = require("synchronize");
_.each(sails.models,function(model){
    _.map(model,function(attrValue,attrKey){ 
        if(typeof attrValue=="function"){
            model[attrKey+"Sync"]=sync(attrValue);
        }
    });
});

с этого момента вы можете использовать синхронную версию любой функции модели, добавив «Sync» после такой функции users.findSync({fname:'Mostafa'})

person Mostafa Sherif    schedule 08.12.2014
comment
Ваше решение кажется хорошим. Но нам также нужно добавить функцию exec. .exec(функция (ошибка, найдено). Как это синхронизировать? Если я использую ваш метод и findSync, возвращаемый объект всегда имеет пустые значения свойств. - person dalton5; 16.05.2015