Sails Waterline Sync呼叫

时间:2014-04-01 20:42:26

标签: sails.js waterline

如何使用Sails.js同步调用Waterline函数。我试过了

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

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

他们都不适合我。

这样做的正确方法是什么?

3 个答案:

答案 0 :(得分:5)

水线方法是异步的,简单明了。否则就没有命令。您会发现许多访问外部数据源(数据库,HTTP等)的Node方法都是这种情况

如果您需要以更加同步的方式将它们链接起来,可以使用像async这样的包来执行此操作。

答案 1 :(得分:2)

我不确定水线是否可行。我几乎肯定这不是意图。

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

以上会更好....不要打击nodejs的异步性质。它只会在以后受到伤害。

答案 2 :(得分:1)

对不起,这个答案为时已晚,您现在可能已经找到了解决方案,但是对于将来的参考,这里是 你可能需要通过更新/config/globals.js来设置lodash全局并设置_: 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'})